【Funpack 第五季第一期】:NXP FRDM-MCXA346 任务一:实现串口输出字符串功能
使用keil mdk5.43版本实现NXP FRDM-MCXA346开发板的串口输出功能,简单介绍在环境安装过程中遇到的问题,及其解决办法。
标签
Funpack活动
LED
串口输出
聪聪哥哥
更新2026-03-13
20

一:项目介绍

使用keil mdk5.43版本实现NXP FRDM-MCXA346开发板的串口输出功能,简单介绍在环境安装过程中遇到的问题,及其解决办法。

二:环境搭建:

由于对keil 的开发环境比较熟悉,就和大家分享一下开发的过程;

软件下载网址如下所示:

https://www.keil.com/demo/eval/arm.htm

我使用的是最新的版本5.43a,没想到的是最新的版本,刚刚安装NXP的SDK包,就提示安装不上,当时上网查看,说的是新版本的keil,取消了直接安装的功能,可以使用在线安装,不过没有科学上网的情况下,还是比较麻烦的。后来上网查才知道,原来keil的支持包是支持导入的。方法如下图所示:

依次点击图中的按钮,然后等待安装完成就可以了。

三:NXP FRDM-MCXA346开发板介绍

3.1 开发板介绍:

FRDM-MCXA346板是一个基于NXPMCXA346微控制器(MCU)的解约和评估平台。MCXA346MCU是一款适用于工业和消费物联网(loT)应用的低功耗微控制器。它配备了一个Arm Cortex-M33核心,最高可达180MHz。它支持工业通信协议、无刷直流(BLDC)电机/永磁同步电机(PMSM)控制,以及集成传感器接口(MIPI-13C、I2C和SPI)该兼容Arduino板 (Arduino UNO R3和Arduino A4/A5)、电机控制板 (FRDM-MC-LVBLDC和FRDM-MCC-LVPMSM)、Mikroe点击板和Pmod板。它可以与多种开发工具一起使用,包括NXPMCUXKpresso IDE、IAR Embedded Workbench和Arm Keil MDK。 该无铅且符合RoHS标准。

为了调试MCXA346微控制器,FRDM-MCXA346板会使用一个板载(OB)调试探针一-MCU-LinkOB,该探针基于另一款恩智浦微控制器:LPC55S16。为方便起见,在本文件中某些地方,MCXA346微控制器和LPC55S16微控制器分别被简称为“目标微控制器”和“调试器微控制器”

本文件提供了关于FRDM-MMCXA346开发板接口、电源供应和时钟的详细信息,连接器、跳线、按钮、LED和MCL-Link OB

3.2 板载资源介绍

MCX A346 Arm® Cortex®-M33内核,运行频率高达180MHz,1MB闪存,256KB RAM,带8KB的纠错码(ECC)

拥有双FlexPWM、4组16位ADC、专用MAU数学加速器以及SmartDMA

高速通用串行总线(HS USB)Type-C连接器(板载MCU-Link调试器),支持CAN/I3C/SPI/I²C/UART连接器(Arduino、PMOD/mikroBUS、DNP)

带有CMSIS-DAP的板载MCU-Link调试器 ,JTAG/SWD连接器

兼容Arduino、mikroBUS、Pmod多种生态

适合:工业自动化、电机控制、IoT边缘计算

四:硬件介绍

4.1 用户指示灯

  如图所示:开发板内置一个RGB的三色灯:

  红色:P3_18

  绿色:P3_19

  蓝色:P3_21

  这样我们可以直接操作对应的GPIO口就可以实现三色灯。

4.2 串口的知识

如图所示,开发板使用低功耗的串口2与调试器的串口相连接,我们在调试的时候,可以使用重映射的功能,将printf函数映射串口2输出就可以了。

五:软件代码

5.1 用户指示灯初始化:

宏定义一些GPIO口:

#define LED_GREEN_ON() \
GPIO_PinWrite(BOARD_LED_RED_GPIO, BOARD_LED_GREEN_GPIO_PIN, LOGIC_LED_ON) /*!< Turn on target LED_GREEN */
#define LED_GREEN_OFF() \
GPIO_PinWrite(BOARD_LED_RED_GPIO, BOARD_LED_GREEN_GPIO_PIN, LOGIC_LED_OFF) /*!< Turn off target LED_GREEN */
#define LED_GREEN_TOGGLE() \
GPIO_PortToggle(BOARD_LED_GREEN_GPIO, 1U << BOARD_LED_GREEN_GPIO_PIN) /*!< Toggle on target LED_GREEN */

将所使用的的三个GPIO口进行初始化

GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED_GPIO_PIN, &led_config);                
GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED2_GPIO_PIN, &led_config);
GPIO_PinInit(BOARD_LED_GPIO, BOARD_LED3_GPIO_PIN, &led_config);

默认将GPIO口的电平拉高;

    LED_GREEN_OFF();
LED_RED_OFF() ;
LED_BLUE_OFF();

5.2 串口2输出函数:

初始化串口2的参数

void BOARD_InitDebugConsole(void)
{
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
CLOCK_SetClockDiv(kCLOCK_DivLPUART2, 1u);
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);

RESET_PeripheralReset(BOARD_DEBUG_UART_RST);

DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE,
BOARD_DEBUG_UART_CLK_FREQ);
}

5.3 主程序如下:

    LED_RED_ON() ;
LED_GREEN_OFF() ;
LED_BLUE_OFF();
delay();
LED_RED_OFF() ;
LED_GREEN_ON() ;
LED_BLUE_OFF();
delay();
LED_RED_OFF() ;
LED_GREEN_OFF() ;
LED_BLUE_ON();
delay();
PRINTF("HELLO,DigiKey Funpak 5-1.\r\n");

实验现象:将程序下载到开发板后,实现RGB三色灯的闪烁过程,同时串口输出固定的字符串;

六:实物验证:

6.1 串口接收如下所示:

6.2 实物点亮图如下所示:

七:感想

感谢电子森林联合得捷举办的funpack活动,让自己工作之余对nxp的软件开发积累了宝贵的经验。在刚刚接触的时候,对nxp的芯片知识了解的很少,本来打算使用nxp官方的ide进行编程,不过在安装的时候遇到了一些问题,为了也是在过年的时候,在家里进行的学习,开发。比如:高版本的keil安装pack包,软件下载过程;后来也是在网上找到的资料才可以正常的烧录和调试。

最后再次感谢举办本次活动的电子森林和得捷的赞助商。

附件下载
led_output.zip
gpio_led_output.out
团队介绍
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号