Funpack5-1 - 使用MCXA346开发板的UART串口通讯实现点灯
该项目使用了MCXA346开发板,实现了远程点灯的设计,它的主要功能为:通过UART串口,输入对应的点灯任务代码,开发板通过任务代码完成对应点灯任务。
标签
嵌入式系统
Funpack活动
NXP
MCXA346
MCUXpresso IDE
CX反C
更新2026-03-13
18

一、项目描述

使用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”

image.png

打印相关任务命令提示

image.png

点亮LED

84b008e5249e15ad74c19ecce62389f3.jpeg

cc87c962812a99f33c6076a36cc31cca.jpeg

状态反馈

image.png

串口错误格式反馈

image.png

五、总结

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
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号