打印

【开放源码】串口调试互交组件-USMART V1.0--Alientek

[复制链接]
4202|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhangyang86 于 2011-4-9 13:00 编辑

USMART是原子这几天工作之余开发出来的一个串口调试互交组建,有了它,你可以通过串口调用任何一个程序里面的函数(仅限参数为10/16进制的函数),并在下位机执行.例如,我 在调试一个摄像头,我想修改里面的一个寄存器,来看看不同情况下面的结果,传统的方法就是改变一下,刷一次代码,这样浪费了时间不说,单片机也很可能被刷坏.或者自己写一个串口协议,从串口发送一个字节过来,然后执行改变,这样可以节省时间,但是需要花一定精力来写一个这样的协议及函数来实现这个功能.
    使用USMART,则可以十分方便的实现以上功能了.比如,在代码里面设置寄存器的函数原形为:
//写寄存器
void COM_WR_Reg(u8 Reg, u16 RegValue)
{
     WR_REG(Reg);  
     WR_DATA(RegValue);        
}
    在usmart组件的帮助下,我们只需要在串口调试助手,输入:COM_WR_Reg(0X03,0X12AB),就可以修改03寄存器的值为0X12AB了.
    这样,完全不需要你自己编写其他多余代码,也不用编写专门的函数,直接在usmart下,即可调用任意一个函数.是不是很方便?呵呵,先上图吧,看看实际运行的效果.



输入"?"获得帮助(也可以通过输入help来获得帮助)



输入"list",列出所有可用的usmart函数.注意,这里的函数没有上线,可以自己随意增加的.



执行LCD_Init函数的结果.



在液晶上指定位置显示一个数字

在液晶上的 100,100坐标画一个70为半径的圆.


非法的输入.(没有输入括号.)
    USMART的使用很简单,比如我们在综合实验中要使用USMART,只需要增加一个USMART的组,把usmart.c,usmart_str.c,usmart_config.c加入即可.然后在主函数的头文件里面增加usmart.h.如下图所示:



    usmart.c包含与外部互交的函数.usmart_str.c主要负责命令和参数解析.usmart_config.c主要由用户添加需要usmart管理的函数.不过这里我们还需要借助到外部的usart.c的支持,在ALIENTEK提供的例程里面,我们只需要把usart.h里面的 #define EN_USART1_RX //使能串口1接收 使能即可.
    在调用的时候,我们先执行usmart_dev.init(); //初始化 USMART 以初始化usmart.(其实这里就是串口初始化一下,其他的啥也没做).
    然后每隔一定时间执行一次usmart_dev.scan();//执行usmart   就可以了.
    usmart_dev.scan()函数用于获取从串口发送过来的指令,并解析和执行.
    我们可以通过定时器中断,来执行usmart_dev.scan();也可以通过在主循环里面扫描执行usmart_dev.scan();.两种方式选择自己合适的就可以了.
    最后再介绍一下如何在usmart_config.c中添加自己的函数.方法如下:



       1,把要加入usmart的函数所在的头文件包含近来,如上图中最上的红圈内.
       2,把要加入usmart的函数名及其字符串函数名增加到usmart_nametab中,如上图左下的红圈内.
       3,编译下载.
       经过这三步,我们就可以在串口控制加入usmart的函数了.如下图所示:


上面列出的list,就是我们在usmart_nametab中输入的所有函数.
      然后我们在串口输入各个函数及其正确的参数后,键入回车,并发送给stm32之后,usmart就开始执行你输入的函数了.如下图所示:


这里附上源码(综合实验+usmart).采用定时器3的中断来执行usmart_dev.scan()函数.每100ms执行一次.
    提醒大家:参数一定不要乱输,否则可能导致不可预知的结果!!!



ALIENTEK MINISTM32 实验28 综合测试实验_USMART.rar

279.07 KB

沙发
senzh01| | 2011-4-9 11:01 | 只看该作者
原子强悍!!

使用特权

评论回复
板凳
(⊙o⊙)你| | 2011-8-11 16:01 | 只看该作者
太强了,有时间了试试

使用特权

评论回复
地板
zhudongpo| | 2011-8-11 16:07 | 只看该作者
收藏了,谢谢原子

使用特权

评论回复
5
wu0232| | 2011-8-11 21:30 | 只看该作者
这个要支持

使用特权

评论回复
6
mohanwei| | 2011-8-11 22:07 | 只看该作者
可以再完善一下,比如delay_ms可以把后面的提示字符串扩展为完整的声明:
{
     delay_ms,"void delay_ms(unsigned short ms)"
}
这样解释引擎就可以根据"void delay_ms(unsigned short ms)"来自动处理你输入的参数了,确保输入参数正确才执行函数……

使用特权

评论回复
7
dfsa| | 2011-8-12 10:28 | 只看该作者
收下了,多谢共享

使用特权

评论回复
8
wangtezi| | 2011-8-22 15:43 | 只看该作者
下来学习一下。
不晓得有没有办法用UART或CAN调试C语言语句?

使用特权

评论回复
9
baidudz| | 2011-8-22 16:17 | 只看该作者
不错,收藏了

使用特权

评论回复
10
pkat| | 2011-8-22 22:32 | 只看该作者
试试,收藏了

使用特权

评论回复
11
无冕之王| | 2011-8-23 14:45 | 只看该作者
教程很详细

使用特权

评论回复
12
txcy| | 2011-8-23 21:30 | 只看该作者
的确挺方便的

使用特权

评论回复
13
jpaekeo| | 2017-11-19 20:16 | 只看该作者
没想到原子在11年就这么厉害了,佩服

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:正点原子STM32开发板购买单击这里

80

主题

916

帖子

51

粉丝