📖 第 21 章:USMART调试组件实验(USMART Debug)

🔧 正点原子《DMF407 开发指南》V1.0 · Chapter 21
🗨️ 「调试神器:在串口里敲函数名就能调用芯片里的函数。」
这一章在干嘛? USMART 调试组件实验:串口命令解析 + 函数指针 + 调用任意无参数函数。从此不用反复编译烧录就能调内部函数。
21.1 USMART 调试组件简介21.2 硬件设计21.3 程序设计21.4 下载验证

21.1 USMART 调试组件简介

USMART 是正点原子开发的串口调试工具,类似 Linux 的命令行:

USMART 由三部分组成:

模块作用
命令解析从串口接收字符串,解析为「函数名(参数列表)」
函数注册表所有可用函数的名称、参数类型
调用执行用函数指针调用目标函数

原书图 21.1.1:USMART 组件框图
原书图 21.1.1:USMART 组件框图

21.2 硬件设计

复用 USART1(PA9/PA10) + LED0/LED1 + 蜂鸣器。

21.3 程序设计

21.3.1 注册函数

USMART 工具支持参数识别:基础类型自动解析,结构体/指针需手动指定。

// 注册函数列表
void *usmart_nametab[] = {
    (void *)led0, "led0",
    (void *)beep, "beep",
    (void *)test, "test",
};

// 函数表:参数类型字符串
struct usmart_fun usmart_funtbl[] = {
    {led0, "void led0(u8 x)"},
    {beep, "void beep(void)"},
    {test, "void test(u8 a, u16 b)"},
};

21.3.2 使用步骤

  1. 串口接收完整命令字符串(CR/LF 结尾);
  2. USMART 解析函数名 + 参数;
  3. 查注册表找到函数指针;
  4. 调用。

原书图 21.3.2.1:USMART 解析流程图
原书图 21.3.2.1:USMART 解析流程图

21.4 下载验证

串口助手输入 led0(1) → LED0 亮;输入 beep() → 蜂鸣器响;输入 help → 列出所有可用函数。

调试利器:把 PID 控制参数、波形数据用 USMART 暴露给串口,无需重新烧录就能改值。

原书图 21.4.1:串口助手调用 USMART 命令
原书图 21.4.1:串口助手调用 USMART 命令

🧠 小测验
USMART 是基于什么实现的?
函数指针 + 串口命令解析。
串口命令以什么字符结尾触发?
回车换行 (\r\n)。
调用 `led0(1)` 后 LED 状态?
调用 led0(1),由 led0 函数实现决定(亮或灭)。
← 上一篇🏠 顶层目录下一篇 →