OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 28038|回复: 32

串口调试互交组件-USMART V1.0

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-4-7 17:42:11 | 显示全部楼层 |阅读模式

     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执行一次.
    提醒大家:参数一定不要乱输,否则可能导致不可预知的结果!!!


里面usmart.c中usmart_exe函数有bug.当输入参数大于等于6个的时候,会出错.先修改该bug,如下:
//usamrt执行函数
//该函数用于最终执行从串口收到的有效函数.
//最多支持10个参数的函数,更多的参数支持也很容易实现.不过用的很少.一般5个左右的参数的函数已经很少见了.
//该函数会在串口打印执行情况.以:"函数名(参数1,参数2...参数N)=返回值".的形式打印.
//当所执行的函数没有返回值的时候,所打印的返回值是一个无意义的数据.
void usmart_exe(void)
{
 u8 id,i;
 u32 res;
 id=usmart_dev.id;
 if(id>=usmart_dev.fnum)return;//不执行.
 printf("\r\n%s(",usmart_dev.funs[id].name);//输出正要执行的函数名
 for(i=0;i<usmart_dev.pnum;i++)//输出参数
 {
  printf("%d",usmart_dev.parm);
  if(i!=usmart_dev.pnum-1)printf(",");
 }
 printf(")");
 switch(usmart_dev.pnum)
 {
  case 0://无参数(void类型)            
   res=usmart_dev.funs[id].func();
   break;
     case 1://有1个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0]);
   break;
     case 2://有2个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1]);
   break;
     case 3://有3个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2]);
   break;
     case 4://有4个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3]);
   break;
     case 5://有5个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4]);
   break;
     case 6://有6个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4],\
   usmart_dev.parm[5]);
   break;
     case 7://有7个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4],\
   usmart_dev.parm[5],usmart_dev.parm[6]);
   break;
     case 8://有8个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4],\
   usmart_dev.parm[5],usmart_dev.parm[6],usmart_dev.parm[7]);
   break;
     case 9://有9个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4],\
   usmart_dev.parm[5],usmart_dev.parm[6],usmart_dev.parm[7],usmart_dev.parm[8]);
   break;
     case 10://有10个参数
   res=usmart_dev.funs[id].func(usmart_dev.parm[0],usmart_dev.parm[1],usmart_dev.parm[2],usmart_dev.parm[3],usmart_dev.parm[4],\
   usmart_dev.parm[5],usmart_dev.parm[6],usmart_dev.parm[7],usmart_dev.parm[8],usmart_dev.parm[9]);
   break;
 }
 printf("=%d;\r\n",res);//输出执行结果.
}



 

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

279.07 KB, 下载次数: 1506

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-7 18:02:48 | 显示全部楼层
必须的,看到RTT有个finsh,于是有了USMART.
usmart资源占用:9K左右FLASH,200多字节的sram.
今晚上个demo,大家买了我们开发板的都可以马上验证的.没有的,可以自己移植USMART到自己的工程里面,难度不大的.
让大家体会下强大的调试功能,哈哈...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2011-3-25
在线时间
4 小时
发表于 2011-4-7 18:06:25 | 显示全部楼层
mark下,有时间再看
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2010-12-14
在线时间
0 小时
发表于 2011-4-7 18:25:08 | 显示全部楼层
en en ,学习学习。
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2011-3-27
在线时间
5 小时
发表于 2011-4-7 18:45:43 | 显示全部楼层
哈哈,好东西,期待中
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-8 00:03:05 | 显示全部楼层
源码已经上传.这下可以在综合实验里面通过串口设置时间了,哈哈....
大家赶紧试试吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
发表于 2011-4-8 10:13:15 | 显示全部楼层
好想法,一定要支持....马上下载试试
回复 支持 反对

使用道具 举报

5

主题

53

帖子

4

精华

高级会员

Rank: 4

积分
675
金钱
675
注册时间
2010-12-14
在线时间
8 小时
发表于 2011-4-8 11:00:48 | 显示全部楼层
额。。。
牛X。。。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-4-8
在线时间
17 小时
发表于 2011-4-8 15:47:30 | 显示全部楼层
牛!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2011-2-12
在线时间
36 小时
发表于 2011-4-9 22:48:45 | 显示全部楼层
原子的东西都是超牛,俺超喜欢的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-9 23:01:14 | 显示全部楼层
回复【11楼】lf8013:
-------------------------------
等你用了之后爽,再说吧。呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2011-4-10 19:59:33 | 显示全部楼层
最好能够在串口调试工具的“接收区”直接输入数据。今天用原子的板子和串口调试工具玩finsh,感觉在下面输入挺麻烦的,另外就是字体小了一些,看着有点累。

还有就是原子的串口调试工具没法在win7下运行啊。我特意在nb上装了个xp系统,但是貌似只有原子的这个串口调试工具和另一款串口工具能够正确接收发送,而另外的很多串口程序,包括xp的超级终端貌似都有问题,不知这是驱动的问题还是usb串口芯片的问题。另外,我提高了程序的波特率,但原子这款工具的接受显示速度还是很慢,和9600bps差不多,数据倒是没有错。希望下一版本能够解决这些问题吧。

bow
业余程序玩家。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-10 21:26:42 | 显示全部楼层
回复【13楼】ofourme:
-------------------------------
在下面输入,习惯就好。
要在接收区输入数据,就和超级终端一样了。
在WIN7下,可以使用丁丁的那款串口调试助手,他的应该可以。
不过我不建议搞开发的人员用WIN7,毕竟很多软件更新没那么快,用WIN7现在还不是时候。

接收速度慢是我程序里面设定了的,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2011-4-11 09:18:37 | 显示全部楼层
回复【14楼】正点原子:
-------------------------------
我想最好两种方式都能够兼容,至少的,给个“alt+enter”发送的快捷键吧,然后清空发送区,这样便于快速输入。用鼠标的效率实在是低。

“丁丁的那款串口调试助”——能否给个链接?谢谢!

“接收速度慢是我程序里面设定了的”——个人看法,这个应该由使用者自己去掌控。刷新太快?在程序里加个延时,不难的。

另:原子有没有考虑过把你的开发板程序迁移到rt平台?我觉得这个挺好的。
业余程序玩家。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-12 09:16:06 | 显示全部楼层
1,这个是个不错的建议,不过我现在没时间弄这个了,以后有机会在搞.
2,丁丁的串口调试助手,直接在我们论坛搜索就能找到.
3,速度是太快了,我才把他放慢的,当初好像是快了会有问题.
4,rt是不错,不过我还是倾向于先学ucos,RT太大了,体积不减下来,很难在低端的单片机上应用,ucos就不同了,51都可以用.有时候操作系统不一定需要这么多功能,在体积和功能上面,必须做权衡的.谁能抓住这个最佳点,谁就能笑得最灿烂.rt有finsh,比我这个强大,不过我不知道占用资源如何了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-4-19 18:23:19 | 显示全部楼层
有点小bug,已修正.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2011-5-5
在线时间
0 小时
发表于 2011-5-21 14:31:19 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-5-21 20:05:51 | 显示全部楼层
usmart V1.3已经成型了。

V1.3特性:
1,增加了字符串支持。可以对参数为字符串指针的函数进行控制了。
2,优化了内存控制。根据参数的长短自动分配空间。整个内存占用在100字节以内。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-4-30
在线时间
0 小时
发表于 2011-5-21 20:56:26 | 显示全部楼层
回复【19楼】正点原子:
-----------------------------------------------------------------------
这个比仿真器还方便啊 这是原子哥独创的么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-5-21 20:57:59 | 显示全部楼层
回复【20楼】电脑鼠:
-----------------------------------------------------------------------
不是我独创的.借鉴的.
通用的称呼叫shell.
RTT叫它finsh.
而我们叫他usmart.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-5-25
在线时间
3 小时
发表于 2011-5-25 19:24:07 | 显示全部楼层
类似uboot,不错,期待新功能
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-5-25 20:16:35 | 显示全部楼层
最近调试豪华版的代码,用的很爽.
哈哈....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2011-1-16
在线时间
4 小时
发表于 2011-5-26 08:51:05 | 显示全部楼层
很好很强大啊,MARK了

顺便还能作为普通串口软件用,问下支持WIN7吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-5-26 09:00:56 | 显示全部楼层
它是个组件来的,是在单片机上面跑的,和你用XP还是WIN7无关.
你在你的代码的基础上,增加这个组件就可以了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2011-6-1
在线时间
2 小时
发表于 2011-6-1 14:09:37 | 显示全部楼层
嗯,挺不错的,这个坛子收藏了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-6-1 14:43:09 | 显示全部楼层
谢谢支持.
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2010-12-17
在线时间
0 小时
发表于 2011-6-6 09:49:23 | 显示全部楼层
这可大大方便了学习和调试,也不占用多少资源----9k才是个小零头
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-6-6 19:04:11 | 显示全部楼层
回复【28楼】chenjnh:
---------------------------------
后续我发布一个升级了的 ,更方便.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

头像被屏蔽

269

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1031
金钱
1031
注册时间
2011-3-30
在线时间
5 小时
发表于 2011-6-9 16:45:07 | 显示全部楼层
顶下,有空慢慢看!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-6-15 11:50:15 | 显示全部楼层
2.0发布了。http://www.openedv.com/posts/list/877.htm?fromAll=0
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2011-8-2
在线时间
0 小时
发表于 2011-12-3 23:59:58 | 显示全部楼层
先收下
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-6-20
在线时间
0 小时
发表于 2014-6-20 21:50:40 | 显示全部楼层
mark!!!
回复 支持 反对

使用道具 举报

2

主题

14

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2015-1-19
在线时间
9 小时
发表于 2015-1-31 17:04:15 | 显示全部楼层
挖坟也要mark!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 10:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表