很高兴能够入围这次活动,之前开发的都是stm32、瑞萨RA系列,第一次接触nxp的单片机。本来还有点纠结怎么装环境,发现FRDM-MCXA153适配了zephyr rtos,正好我最近在学习zephyr,之后开发我打算使用zephyr的rtos来实现。
一、 开箱
DigiKey的大箱子
nxp的FRDM-MCXA153,包装很薄很简洁,里面一块开发板,还带一根1m type c数据线



二、 FRDM-MCXA153
1. 开发板简介与核心特性
FRDM-MCXA153 是 NXP 官方推出的一款低成本、紧凑型开发板,搭载基于 Arm® Cortex®-M33 内核的 MCXA153 微控制器,最高主频可达 96 MHz。板卡自带板载 MCU-Link 调试器,并兼容 Arduino® UNO R3、Pmod™ 及 mikroBUS™ 等多种扩展接口。
核心参数表:| MCU 型号 | MCXA153VLH (Arm® Cortex®-M33) |
| 主频 | 高达 96 MHz |
| Flash / SRAM | 128 KB Flash, 32 KB SRAM (含 8KB ECC) |
| 调试器 | 板载 MCU-Link (CMSIS-DAP / J-Link 固件) |
| 板载外设/传感器 | P3T1755DPJ I3C/I2C 温度传感器、RGB 用户 LED、Reset/ISP/Wakeup 按键 |
| 扩展接口 | Arduino UNO R3 接口、mikroBUS™ 接口、Pmod™ 接口 |
| USB 接口 | FS USB Type-C (Host/Device) + HS USB Type-C |
2. 硬件框图与引脚
开发板整体设计十分简洁,外设引脚通过标准的 Arduino 扩展排针引出,方便连接各类传感器与模块。


三、 简简单单点个灯
基于 Zephyr RTOS 实现了基本的 GPIO 点灯示例(Blinky)。代码使用 Zephyr 的 Devicetree API 自动获取板载 LED 引脚配置(通过 led0 别名映射到板载板载 LED),并在主循环中实现周期性翻转与串口状态打印。
1. 核心代码 (src/main.c)
#include <stdio.h>
#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
/* 1000 msec = 1 sec */
#define SLEEP_TIME_MS 1000
/* 获取设备树中 "led0" 别名对应的节点标识符 */
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);
int main(void)
{
int ret;
bool led_state = true;
/* 检查 GPIO 设备是否就绪 */
if (!gpio_is_ready_dt(&led)) {
return 0;
}
/* 配置 GPIO 引脚为输出模式,默认输出高电平 */
ret = gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
if (ret < 0) {
return 0;
}
while (1) {
/* 翻转 GPIO 引脚状态 */
ret = gpio_pin_toggle_dt(&led);
if (ret < 0) {
return 0;
}
led_state = !led_state;
printf("LED state: %s\n", led_state ? "ON" : "OFF");
k_msleep(SLEEP_TIME_MS);
}
return 0;
}2. 代码简要说明
设备树别名映射:代码中通过 DT_ALIAS(led0) 获取板载 LED 的节点信息,无需硬编码引脚号,增强了代码的跨平台移植性。
GPIO 初始化:使用 gpio_is_ready_dt 和 gpio_pin_configure_dt 完成引脚功能校验与输出初始化。
主循环控制:利用 gpio_pin_toggle_dt 实现高低电平翻转,并通过 k_msleep(SLEEP_TIME_MS) 延时 1000ms(1秒),串口同步打印 LED 当前状态。
四、 后续安排
在完成环境搭建和基本的 GPIO Blinky 点灯实验后,接下来的阶段我将基于 Zephyr RTOS 的多任务并发机制,逐步实现一个完整项目:基于 Zephyr RTOS 的 FRDM-MCXA153 超声波雷达扫描系统。
我要赚赏金
