1.      简述

USMART 是由 ALIENTEK 开发的一个灵巧的串口调试互交组件,通过它你可以通过串口
助手调用程序里面的任何函数,并执行。因此,你可以随意更改函数的输入参数(支持数字 ( 10/16进制, 支持负数)、字符串、函数入口地址等作为参数),单个函数最多支持 10 个输入参数,并支持函数返回值显示。

2.      USMART功能简述

USMART 的功能类似 linux 的shell( RTT的finsh 也属于此类)。它最主要的功能就是通过串口调用单片机里面的函数,并执行,可以帮助我们调试代码。对其进行简易改动,也可以设计成单片机系统的指令系统。

USMART主要功能有:

l  可以调用绝大部分用户直接编写的函数。

l  支持参数类型多(数字(包含10/16进制)、字符串、函数指针等)。

l  支持函数返回值显示。

l  支持参数及返回值格式设置。

l  支持函数执行时间计算。

3.      实现机制

USMART组件主要包括五部分:一是输入和输出接口,主要是串口进行交互和信息转存;二是信息的解析,在转存信息提炼出函数和参数,并按格式贮存;三是函数执行,即执行输入的函数;四是控制USMART运行的机制;五是单片机内的函数列表信息,作为比对使用。

USMART运行的机制实现1.何时获得信息;2.获得必要信息;3,何时按信息执行,如何转到信息执行的函数中去。

何时获取信息:使用定时扫描的方式,使用一个定时器,在定时中断时扫描缓存空间;

获得必要信息:在串口接收中,将上位机输入的信息存到缓存空间,此时得到原始信息;在定时扫描时,将缓存空间中原始信息解析成需要的具体信息;

何时按信息执行:在解析完成后,将具体信息与函数列表信息进行比对,得到需要执行的函数及参数,采用函数指针调用的方式调用相应的执行函数。

4.      数据结构

4.1 USMART控制管理数据结构

根据功能要求,要实现USMART控制管理,需要设计一个结构来控制usmart的执行。其变量包含信息应包括:

(1)    组件执行的必要函数,如组件初始化、信息解析、信息比对、函数执行等;

(2)    调试函数的名称、参数数量、参数类型;

(3)    其他辅助变量;

(4)    附加功能,如运行时间统计等。

usmart控制管理器定义的结构如下:

struct_m_usmart_dev

{

struct _m_usmart_nametab *funs; //函数名指针

void (*init)(u8);                                 //初始化

u8 (*cmd_rec)(u8*str);                     //识别函数名及参数

void (*exe)(void);                             //执行

void (*scan)(void);             //扫描

u8 fnum;                                                 //函数数量

u8 pnum;                        //参数数量

u8 id;                                                          //函数id

u8 sptype;                                                  //参数显示类型(非字符串参数):0,10进制;1,16进制;

u16 parmtype;                                  //参数的类型

u8 plentbl[MAX_PARM];              //每个参数的长度暂存表

u8 parm[PARM_LEN];                           //函数的参数

u8 runtimeflag;                                         //0,不统计函数执行时间;1,统计函数执行时间,注意:此功能必须在USMART_ENTIMX_SCAN使能的时候,才有用

u32 runtime;                                     //运行时间,单位:0.1ms,最大延时时间为定时器CNT值的2倍*0.1ms

};

其在头文件中即初始化。

//函数控制管理器初始化

//得到各个受控函数的名字

//得到函数总数量

struct_m_usmart_dev usmart_dev=

{

usmart_nametab, //指向执行函数列表。。。。

usmart_init,

usmart_cmd_rec,

usmart_exe,

usmart_scan,

sizeof(usmart_nametab)/sizeof(struct_m_usmart_nametab),//函数数量

0,           //参数数量

0,           //函数ID

1,              //参数显示类型,0,10进制;1,16进制

0,              //参数类型.bitx:,0,数字;1,字符串

0,           //每个参数的长度暂存表,需要MAX_PARM个0初始化

0,              //函数的参数,需要PARM_LEN个0初始化

};

4.2 执行函数列表

单片机内的作为比对函数列表信息的贮存,设计一个列表。每项包括两个要素,一是函数的指针变量,指向函数的执行;一是函数名,用来与信息进行比对。

struct_m_usmart_nametab

{

void* func;                        //函数指针

const u8* name;              //函数名(查找串)

};

在结构数组里将需要调试的函数的两类信息。

struct_m_usmart_nametab usmart_nametab[];

数组中初始化如:

struct_m_usmart_nametab usmart_nametab[]=

{

…………….

(void*)LCD_Clear,"voidLCD_Clear(u16 Color)",

…………….

};

5.补充:

使用USMART 调用的函数,必须将文件添加到usmart_config.c:

只要把函数所在头文件添加进来,并把函数名按上图所示的方,增加即可。

最后,要在串口助手里通过usmart组件调试函数,

(1)id,该指令用于获取各个函数的入口地址;

(2)?和 help,这两个指令的功能是一样的。发送该指令后,串口将打印 usmart 使用的帮助信
息;

(3)hex 和 dec,这两个指令可以带参数,也可以不带参数。当不带参数的时候, hex 和 dec 分

别用于设置串口显示数据格式为 16 进制/10 进制。当带参数的时候, hex 和 dec 就执行进制转换,

比如输入: hex 1234,串口将打印: HEX:0X4D2,也就是将 1234 转换为 16 进制打印出来。又比如

输入: dec 0X1234,串口将打印: DEC:4660,就是将 0X1234 转换为 10 进制打印出来。

(4)list,该命令用于打印所有 usmart 可调用函数。

(5)runtime 指令,用于函数执行时间统计功能的开启和关闭,发送: runtime 1,可以开启函数
执行时间统计功能;发送: runtime 0,可以关闭函数执行时间统计功能。函数执行时间统计功
能,默认是关闭的。

调试组件USMART的学习相关推荐

  1. STM32F103学习笔记(十一)——USMART调试组件的使用

    实验十一 USMART调试组件的使用 测试指令: 测试主函数参考代码: #include "stm32f10x.h" #include "led.h" #inc ...

  2. stm32-mini学习笔记-USMART调试组件

    目录 USMART调试过程 USMART特点 USMART文件简介 USMART配置步骤 USMART系统命令 实验现象 main中代码 USMART调试过程 1.串口发送命令调用函数 2.单片机节后 ...

  3. dev c++怎么调试_「正点原子NANO STM32开发板资料连载」第十八章 USMART 调试组件...

    1)实验平台:ALIENTEK NANO STM32F411 V1开发板2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十八章 U ...

  4. USMART 调试组件实验

    文章目录 前言 一.USMART调试组件简介 USMART组件的移植 二.硬件设计 三.软件设计 前言 本章,我们将向大家介绍一个十分重要的辅助调试工具:USMART 调试组件.该组件由 ALIENT ...

  5. 基于STM32战舰开发板的USMART调试组件的使用

    基于STM32战舰开发板的USMART调试组件的使用 USMART调试组件是什么? USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具.具体工作过程是通过串 ...

  6. USMART调试组件实验

    USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具.具体工作过程是通过串口发送命令给单片机,然后单片机收到命令之后调用单片机里面对应的相关函数,并执行,同时 ...

  7. 【正点原子STM32连载】 第二十六章 USMART调试组件实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  8. STM32——USMART调试组件实验-M4

    什么是USMART? USMART是为STM32开发平台开发的一种类似Linux的shell的调试工具.具体工作过程是通过串口发送命令给单片机,然后单片机收到命令之后调用单片机里面对应的相关函数并执行 ...

  9. 辅助调试工具—USMART调试组件

    培养解决问题意识和能力,培养创新意识和能力--    受之以鱼,不如受之渔         学习策略:问题+解决方案 问题(机遇)来源: 什么意思呢?就是为什么会提出上面那个东西?这个东西是怎么来的? ...

最新文章

  1. PAT乙级(Basic Level)练习题-写出这个数 (20)
  2. 牛皮啊,全网独家SpringCloud Alibaba手打笔记
  3. boost::log模块实现从设置文件初始化库的示例
  4. C# Winform验证码
  5. 7分钟理解JS的节流、防抖及使用场景
  6. 32位linux 内存占用,LINUX内存高,触发OOM-KILLER问题解决
  7. 抽象类必须要有抽象方法吗?
  8. java环境安装包出现覆盖,请查收
  9. python源码编译 mingw_在windows上用gcc(mingw32)从命令行编译Cython扩展
  10. j pocket_Wallabag:Pocket的开源替代品
  11. centos 指定文件路径 脚本_centos自动删除三天前文件的脚本和自动进入指定目录运行命令...
  12. 基于R语言绘制BBC风格图表
  13. 【原创】查找原始MySQL死锁ID
  14. AIDE手机编程初级教程(零基础向) 3.2.2 设计欢迎页(补充)
  15. 《Redis视频教程》(p6)
  16. mysql-bin.index_mysqlbin.index是什么文件
  17. drwxr-xr-x是啥意思
  18. 产品原型设计:使用axure实现菜单下拉效果
  19. 中国异戊烷市场调研与投资预测报告(2021版)
  20. 企微和钉钉发力,送谁一首《凉凉》?

热门文章

  1. android 实现按住说话功能
  2. 代理模式Proxy——读书笔记
  3. 高通退出服务器芯片市场,华为会跟随退出么?
  4. 计算机病毒与网络安全的小报,关于网络安全手抄报内容
  5. IPTV解决方案之医院IPTV智慧电视系统
  6. 58同城 -- 前端一面
  7. 安卓期末复习大纲(全)
  8. android模拟器限制网速,安卓模拟器设置网速和延迟
  9. python IP代理爬虫,download 代理IP
  10. Erasure-Code(纠删码) 最佳实践