USMART调试组件是什么?
USMART是正点原子团队为其STM32开发平台开发的一种类似linux的shell的调试工具。具体工作过程是通过串口发送命令给单片机,然后单片机收到命令之后调用单片机里面对应的相关函数,并执行,同时支持返回结果。
USMART是干什么的?
USMART的功能就是改变了函数参数修改的方式,我们以前总是“修改函数参数->下载到开发板中执行”,但是使用USMART之后,我们不用在那样做了,而是“用串口进行函数参数的修改->开发板执行相应操作”。
在我看来,USMART就是一个函数调试助手,可以从串口发送参数也可以从串口接收函数返回值。
USMART的作用机理
这里我们要明白一下,函数的存储方式:
其中,函数体是一个数据处理的工具本身并不占用空间,只是在调用函数处理数据的时候在进行压栈出栈的一些逻辑操作。
USMART修改这些函数的参数值正是通过“访问函数参数的地址并且修改这些参数“实现的。
USMART调试功能的实现——定时器与串口的配合使用
注意我们这里的串口扫描函数的内容以及串口扫描函数的执行位置:
//usmart扫描函数
//通过调用该函数,实现usmart的各个控制.该函数需要每隔一定时间被调用一次
//以及时执行从串口发过来的各个函数.
//本函数可以在中断里面调用,从而实现自动管理.
//如果非ALIENTEK用户,则USMART_RX_STA和USMART_RX_BUF[]需要用户自己实现
void usmart_scan(void)
{
u8 sta,len;
if(USMART_RX_STA&0x8000)//串口接收完成?
{
len=USMART_RX_STA&0x3fff; //得到此次接收到的数据长度
USMART_RX_BUF[len]='