STM32-USMART

发布时间:2026/7/29 11:24:24

STM32-USMART 一、为什么需要 USMART嵌入式开发中很多函数需要在不同参数下反复验证例如修改 PWM 占空比。读取传感器数据。设置阈值参数。执行 Flash 擦写或读取。查询外设状态。调整控制算法参数。如果每次修改参数都通过代码重新编译、烧录和查看结果调试成本会很高。USMART 将串口交互和函数调用结合起来使开发者可以在串口工具中直接输入函数名和参数快速调用目标函数。它的定位可以理解为一个轻量级的嵌入式命令行调试组件。二、USMART 的特点USMART 的主要特点如下特点说明占用资源少最小约占用 4 KB Flash 和 72 B SRAM调用普通函数可管理绝大多数用户直接编写的函数参数类型丰富支持十进制/十六进制整数、字符串、函数指针等参数支持返回值显示可以显示函数执行后的返回结果并设置显示格式支持运行时间统计可测量目标函数的执行时间串口交互方便输入命令后即可完成函数调用和结果查看需要注意USMART 适合调试阶段使用。正式产品中应根据安全性和资源占用情况决定是否保留。三、USMART 的工作原理USMART 的核心流程是“字符串解析 函数匹配 函数指针调用”。串口接收用户输入 | v 解析函数名和参数 | v 在函数表中匹配函数名 | -- 未匹配 - 丢弃输入并输出错误信息 | v 通过函数指针调用目标函数 | v 输出函数返回值和执行结果例如用户在串口工具中输入一个符合规则的函数调用表达式目标函数名(参数1, 参数2)USMART 会解析输入字符串检查函数名是否已经注册并将参数转换为对应类型。匹配成功后组件通过函数指针执行目标函数。这种机制的关键在于串口输入本质上是字符串USMART 需要完成字符串比较、参数分割、类型转换和函数分发。四、USMART 组件组成USMART 通常由以下文件组成文件作用usmart.c/.h核心文件负责命令处理和与外部模块交互usmart_config.c函数管理文件用于添加需要由 USMART 调用的用户函数usmart_port.c/.h移植文件用于适配串口、定时器等硬件资源usmart_str.c/.h字符串处理文件负责字符串转换和参数获取1. 核心扫描函数USMART 的核心扫描函数为void usmart_scan(void);该函数用于检查并解析串口接收的数据完成函数调用和系统命令处理。通常需要在主循环、任务循环或专门的命令处理任务中周期性调用usmart_scan()。while (1) { usmart_scan(); ​ /* 其他应用任务 */ }如果没有调用扫描函数即使串口已经收到数据USMART 也不会执行命令。五、USMART 移植步骤将 USMART 移植到自己的工程中可按以下流程进行。1. 获取并添加组件文件将 USMART 的全部组件文件添加到工程中并配置好头文件搜索路径。通常需要添加usmart.c/.h usmart_config.c usmart_port.c/.h usmart_str.c/.h2. 适配调试串口USMART 依赖串口完成命令输入和结果输出因此需要先保证调试串口工作正常。适配时重点检查串口波特率是否与上位机一致。串口接收是否能获得完整的一行命令。串口发送函数是否可正常输出字符串。回车换行符是否能正确识别。3. 适配定时器如果需要使用函数运行时间统计功能还需要适配定时器。定时器用于记录函数执行前后的计数值再计算时间差。选择计时定时器时应注意定时器时钟频率要明确。计数周期应覆盖待测函数的最长执行时间。需要考虑计数器溢出。中断频繁或系统调度会影响测量结果。4. 添加需要执行的函数在usmart_config.c中添加需要由 USMART 管理的函数。建议优先注册这类函数读取状态或传感器数据的查询函数。用于设置参数的接口函数。自检和诊断函数。外设初始化或重新配置函数。便于定位问题的测试函数。不建议直接注册高风险函数例如复位系统、擦除整片 Flash、修改关键时钟配置等。即使需要调试也应增加额外确认机制。5. 烧录并通过串口交互完成移植后打开串口工具按照函数定义中的格式输入函数名和参数并以回车结束命令。USMART 解析成功后会执行函数并输出返回结果输入格式错误、函数不存在或参数不匹配时则会输出错误信息。六、USMART 系统命令USMART 内置常用系统命令便于查看帮助信息、函数列表、参数格式和运行时间。命令作用?获取帮助信息help获取帮助信息list查看可调用的函数列表id查看可用函数的 ID 列表hex 数字将参数按十六进制显示dec 数字将参数按十进制显示runtime 1开启函数运行时间统计runtime 0关闭函数运行时间统计常见使用顺序help list runtime 1 目标函数名(参数) runtime 0其中list适合在忘记函数名称时查看可用接口runtime 1适合分析某个函数是否耗时过长。

相关新闻