目前FRDM-MCXN947板级支持包提供MDK5,并且支持 GCC 开发环境,现以 MDK5 开发环境为例,介绍如何将示例程序运行起来。运行示例程序前需要做如下准备工作:
NXP官方的FRDM-MCXN947的上手教程,可以参考这里
MDK 开发环境
需要安装 MDK-ARM 5.38(或以上版本均可)和MCXN947_DFP17.0.0芯片资源包。安装方法可以参考 Keil MDK安装。
keil安装教程:嵌入式系统开发的集成开发环境Keil 5.39版本的安装和配置使用 恩智浦FRDM-MCX947程序源码在rt-thread仓库中,需要克隆下载 源码目录说明
硬件连接
使用USB线连接开发板的USB转运行第一个示例程序
编译下载
进入到 rt-thread\bsp\nxp\mcxn\frdm-mcxn947文件夹中,双击 project.uvprojx文件,
打开 MDK5工程
main主程序在applications文件夹下
程序解析
该程序是使用RT-Thread实时操作系统(RTOS)编写的C语言应用程序,主要功能包括LED灯的闪烁控制、按钮中断处理以及SD卡挂载。以下是程序的详细分析:
头文件包含与版权信息
包含了rtdevice.h、rtthread.h和drv_pin.h头文件,分别提供了RT-Thread设备驱动接口、RT-Thread内核功能和特定硬件平台(如GPIO)的驱动定义。提供了版权信息及版本变更记录,显示了该程序基于RT-Thread实时操作系统,并列出了参与开发的团队成员及其贡献。
定义常量
LEDB_PIN:定义LED引脚编号为第0组的第10号引脚(根据特定硬件平台的GPIO编号规则)。
BUTTON_PIN:定义按钮引脚编号为第0组的第23号引脚。
定义回调函数
sw_pin_cb(void *args):当按钮按下触发中断时调用的回调函数。该函数仅输出一条消息”sw pressed”,表明按钮已被按下。
main()函数
输出编译器版本信息:根据预定义的编译器宏判断使用的编译器类型(如ARM Compiler、Clang、IAR或GCC),并打印对应的版本信息。
初始化LED与按钮引脚:
将LED引脚设置为输出模式,以便后续控制LED的亮灭。
将按钮引脚设置为输入模式并启用内部上拉电阻,用于检测按钮的按下状态。
注册按钮引脚的下降沿中断,并启用中断功能。当按钮被按下时,将调用sw_pin_cb()回调函数。
输出欢迎消息:”MCXN947 HelloWorld”,表明设备型号及程序名称。
挂载SD卡(条件编译,仅在RT_USING_SDIO定义时执行):
延迟2秒,给SD卡足够的初始化时间。 使用dfs_mount()函数尝试将SD卡挂载到根目录/,使用ELM FatFS文件系统。如果挂载成功,输出”sd mounted to /“;否则,输出”sd mount to / failed”。
主循环:
使LED引脚输出高电平,LED亮起。
延迟500毫秒。
使LED引脚输出低电平,LED熄灭。
延迟500毫秒。
循环执行上述操作,实现LED灯的周期性闪烁。
综上所述,该程序的主要功能是在RT-Thread实时操作系统环境下,控制LED灯以固定频率闪烁,并通过按钮中断响应用户的按键操作。同时,根据配置,尝试挂载SD卡并报告挂载结果。
执行编译
编译完成后,点击下载按钮将固件下载至开发板,下载完成后,程序会自动开始运行,观察程序运行状况。
提示警告Pack NXP::MCXN947_DFP@17.0.0: Required C 99, but current is C <default>,设置匹配编译器c99
提示:工程默认配置使用 CMSIS-DAP下载程序,点击下载按钮可下载程序到开发板
测试运行
如没有自动运行,按下复位按键重启开发板,观察开发板上 LED 的实际效果。
|