USMART
STM32 平台专属 相当于Linux的shell的调试工具
工作过程
通过串口发送命令给单片机,单片机收到命令后调用单片机内的相关函数,并执行,支持返回结果。
调试过程
①串口调试助手发送函数命令:Led_Set(0); ②单片机接受到命令之后,解析命令,调用对应的函数:Led_set(); ③Led_set函数
应用场景
频繁修改函数入口参数,查看运行效果
特点
① 可调用绝大部分用户直接编写的函数 ② 资源占用极少 ③ 支持参数类型多 ④ 支持函数返回值显示 ⑤ 支持参数及返回值格式设置 ⑥ 支持函数执行时间计算 ⑦ 使用方便
文件组
usmart.c
负责外部互交
usmart_str.c
负责命令和参数解析
usmart_config.c
添加需要由usmart管理的函数
usmart.h
配置宏定义 配置usmart的功能及总参数长度 是否使用定时器扫描 是否使用读写函数
配置步骤
① 将USMART包添加到工程中,头文件包含path ② 添加需要调用的函数到usmart_config.c文件中 ③ 主函数中调用usmart_dev.init 函数初始化usmart ④ 通过助手发送命令,调用usmart中注册过的函数
初始化的函数名列表
struct _m_usmart_nametab usmart_nametab[]=
{
#if USMART_USE_WRFUNS==1
(void*)read_addr,"u32 read_addr(u32 addr)",
(void*)write_addr,"void write_addr(u32 addr,u32 val)",
#endif
(void*)delay_ms,"void delay_ms(u16 nms)",
(void*)delay_us,"void delay_us(u32 nus)",
(void*)LCD_Clear,"void LCD_Clear(u16 Color)",
(void*)LCD_Fill,"void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color)",
(void*)LCD_DrawLine,"void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)",
(void*)LCD_DrawRectangle,"void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2)",
(void*)LCD_Draw_Circle,"void Draw_Circle(u16 x0,u16 y0,u8 r)",
(void*)LCD_ShowNum,"void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)",
(void*)LCD_ShowString,"void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)",
(void*)LCD_Fast_DrawPoint,"void LCD_Fast_DrawPoint(u16 x,u16 y,u16 color)",
(void*)LCD_ReadPoint,"u16 LCD_ReadPoint(u16 x,u16 y)",
(void*)LCD_Display_Dir,"void LCD_Display_Dir(u8 dir)",
(void*)led_set,"void led_set(u8 sta)",
(void*)LCD_ShowxNum,"void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode)",
};
|