2.2 本次移植目标通过 DAPLink 的 USART1 实现串口 Shell支持 LED 的开关、状态查询、Toggle 控制与 Zephyr 标准接口兼容
3. 硬件连接
| 信号 | MCU 引脚 | 说明 |
| TX | PA9 | USART1 发送,接 DAPLink RX |
| RX | PA10 | USART1 接收,接 DAPLink TX |
串口参数: 波特率:115200数据位:8停止位:1校验位:无
4. 软件实现4.1 配置修改
在 `prj.conf` 中添加以下配置:
# Shell 支持 CONFIG_SHELL=y CONFIG_SHELL_BACKEND_SERIAL=y CONFIG_SHELL_BACKEND_SERIAL_API_POLLING=y CONFIG_SHELL_BACKEND_SERIAL_RX_POLL_PERIOD=104.2 UART 驱动修改在 `src/drivers/uart_at32.c` 中添加 RX 引脚配置:
/* Configure RX pin (PA10) */ temp = GPIOA_MODE; temp &= ~0x00300000; temp |= 0x00200000; GPIOA_MODE = temp; temp = GPIOA_MUXH; temp &= ~0x00000F00; temp |= 0x00000700; GPIOA_MUXH = temp; /* Enable RX */ usart->CTRL1 = CTRL1_UEN | CTRL1_TEN | CTRL1_REN;4.3 Shell 命令实现
在 `main.c` 中实现 LED 控制命令:
/* LED 控制命令:led <on|off|status|toggle> <2|3|4> */
static int cmd_led(const struct shell *sh, size_t argc, char **argv)
{
// 处理 status/toggle/on/off
}
SHELL_CMD_REGISTER(led, NULL, "LED control", cmd_led); 5. 测试与验证5.1 准备工作1. 使用 DAPLink 连接 AT32F423 开发板2. 打开串口终端软件(如 PuTTY、MobaXterm)3. 配置串口:115200, 8N14. 烧录固件
5.2 验证步骤
步骤 1:观察启动信息
复位后,终端应显示:

步骤 2:查看帮助
输入 help 查看可用命令:

步骤 3:LED 控制测试
查询 LED 状态le:

uart:~$ led status LED2: ON LED3: ON LED4: ON uart:~$ led off 2 LED2 OFF uart:~$ led on 2 LED2 ON uart:~$ led off 3 LED3 OFF uart:~$ led off 4 LED4 OFF uart:~$ led status LED2: ON LED3: OFF LED4: OFF程序正常运行
6. 扩展应用基于本文档的实现,可以继续扩展:添加更多 Shell 命令(如 GPIO 控制、定时器配置等)实现参数保存功能添加命令历史和自动补全
我要赚赏金
