内容介绍
内容介绍
一、项目描述
使用MCXA346开发板的串口,配合MCUXpresso软件开发套件(SDK)里面的fsl_debug_console库的PRINTF函数及SCANF函数实现串口输入对应任务命令,开发板解析命令并实现该命令,并通过串口反馈任务是否成功。
二、硬件介绍
1.FRDM-MCXA346 开发板
FRDM-MCXA346 是一款紧凑且可扩展的开发板,可让你快速基于FRDM-MCXA346微控制器单元(MCU)开展原型设计。它们提供行业标准的接口,可轻松访问MCU的I/O,配备集成的开放标准串行接口、外部闪存和板载MCU-Link调试器。通过 MCUXpresso Developer Experience提供其他工具,如面向附加板的扩展板中心和面向软件示例的应用代码中心。
2.板载3色RGB灯
板载3色RGB灯,通过IO口与MCXA346连接,可通过IO口高低电平实现LED的点亮与熄灭。
三、软件流程图及主要代码片段

1.相关外设初始化
void BOARD_InitHardware(void)
{
BOARD_InitLEDsPins();
//BOARD_BootClockFRO12M();
BOARD_InitBootPeripherals();
//LED初始化
LED_RED_INIT(LOGIC_LED_OFF);
LED_GREEN_INIT(LOGIC_LED_OFF);
LED_BLUE_INIT(LOGIC_LED_OFF);
BOARD_InitDEBUG_UARTPins(); //UART初始化
BOARD_InitBootClocks(); //时钟初始化
BOARD_InitDebugConsole();
}
2.Main函数
2.1定打印相关任务提示
PRINTF("\r\n--- RGB灯点亮 (Red, Green, Blue) ---\r\n");
PRINTF("命令为: red 1/0, green 1/0, blue 1/0\r\n");
2.2定义命令数据存取
char cmd[10]; /* 存储命令字符串,如 "red" */
int state; /* 存储状态值 1 或 0 */
2.3while (1)循环
2.3.1等待命令
if (SCANF("%9s %d", cmd, &state) == 2) //注意命令输入需要带换行字符,才能算一个完整的命令
2.3.2解析命令并点亮\熄灭对应LED,同时发送错误提示格式错误并发送正确命令格式
if (strcmp(cmd, "red") == 0) //操作红色LED
{
if (state == 1)
{
LED_RED_ON();
PRINTF("红色 LED 点亮\r\n");
}
else if (state == 0)
{
LED_RED_OFF();
PRINTF("红色 LED 熄灭\r\n");
}
else
{
PRINTF("格式错误, 请输入 red 1/0, green 1/0, blue 1/0\r\n");
}
}
else if (strcmp(cmd, "green") == 0) //操作绿色LED
{
if (state == 1)
{
LED_GREEN_ON();
PRINTF("绿色 LED 点亮\r\n");
}
else if (state == 0)
{
LED_GREEN_OFF();
PRINTF("绿色 LED 熄灭\r\n");
}
else
{
PRINTF("格式错误, 请输入 red 1/0, green 1/0, blue 1/0\r\n");
}
}
else if (strcmp(cmd, "blue") == 0) //操作蓝色LED
{
if (state == 1)
{
LED_BLUE_ON();
PRINTF("蓝色 LED 点亮\r\n");
}
else if (state == 0)
{
LED_BLUE_OFF();
PRINTF("蓝色 LED 熄灭\r\n");
}
else
{
PRINTF("格式错误, 请输入 red 1/0, green 1/0, blue 1/0\r\n");
}
}
else
{
PRINTF("格式错误, 请输入 red 1/0, green 1/0, blue 1/0\r\n");
}
2.3.3清除缓冲区,防止内部卡死
/* 输入格式错误,清空输入缓冲区防止卡死 */
PRINTF("格式错误, 请输入 red 1/0, green 1/0, blue 1/0\r\n");
while (GETCHAR() != '\n'); /* 丢弃一行中剩余字符 */
四、功能展示图片及说明
串口输出“Hello, DigiKey Funpack 5-1”

打印相关任务命令提示

点亮LED


状态反馈

串口错误格式反馈

五、总结
5.1项目中遇到的难题和解决方法
1.官方的MCUXpresso软件开发套件(SDK)使用教程太少,网页配置SDK过于复杂,导致SDK下载出错
通过浏览官方的中文论坛及查看同厂家的其他芯片教程解决
2.使用SCANF函数时串口命令发送后无法进入命令解析过程;
询问AI后,命令发送增加换行后,SCANF函数确认得到完整命令进入命令解析过程。
5.2对本活动的心得体会
第一次接触NXP的芯片,学习开发环境IDE的使用,并通过配置相应的SDK,学习了不同厂家的芯片,丰富了个人学习历程,对NXP的芯片有了更深层次的学习。
软硬件
附件下载
frdmmcxa346_led_blinky_peripheral_222.zip
团队介绍
一个热爱嵌入式的个人爱好者
评论
0 / 100
查看更多
猜你喜欢
Funpack5-1 基于MCXA346实现UART串口通信输出该项目使用了MCXA346,实现了UART串口通信输出的设计,它的主要功能为:基于MCXA346实现UART串口通信输出。
空耳-
28
Funpack5-1 基于MCXA346实现UART串口通信输出该项目使用了NXP FRDM-MCXA346 开发板,实现了基于MCXA346实现UART串口通信输出的设计,它的主要功能为:使用MCXA346开发板的UART串口输出“Hello, DigiKey Funpack 5-1”。
仗剑天涯
65
Funpack5-1 - 使用MCXA346开发板的UART串口通信使用MCXA346开发板的UART串口输出"Hello, DigiKey Funpack 5-1"信息,并实现Shell系统通信控制RGB灯,并把执行的信息通信串口打印在串口助手中。
meiyao
4