OpenEdv-开源电子网

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

USMART V2.7 组建代码发布.

[复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-10-24 15:10:19 | 显示全部楼层 |阅读模式
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32开发板   
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2011/6/13
//版本:V2.7
//版权所有,盗版必究。
//Copyright(C) 正点原子 2011-2021
//All rights reserved
//********************************************************************************
//升级说明
//V1.4
//增加了对参数为string类型的函数的支持.适用范围大大提高.
//优化了内存占用,静态内存占用为79个字节@10个参数.动态适应数字及字符串长度
//V2.0
//1,修改了list指令,打印函数的完整表达式.
//2,增加了id指令,打印每个函数的入口地址.
//3,修改了参数匹配,支持函数参数的调用(输入入口地址).
//4,增加了函数名长度宏定义. 
//V2.1 20110707  
//1,增加dec,hex两个指令,用于设置参数显示进制,及执行进制转换.
//注:当dec,hex不带参数的时候,即设定显示参数进制.当后跟参数的时候,即执行进制转换.
//如:"dec 0XFF" 则会将0XFF转为255,由串口返回.
//如:"hex 100"  则会将100转为0X64,由串口返回
//2,新增usmart_get_cmdname函数,用于获取指令名字.
//V2.2 20110726 
//1,修正了void类型参数的参数统计错误.
//2,修改数据显示格式默认为16进制.
//V2.3 20110815
//1,去掉了函数名后必须跟"("的限制.
//2,修正了字符串参数中不能有"("的bug.
//3,修改了函数默认显示参数格式的修改方式.
//V2.4 20110905
//1,修改了usmart_get_cmdname函数,增加最大参数长度限制.避免了输入错误参数时的死机现象.
//2,增加USMART_ENTIM2_SCAN宏定义,用于配置是否使用TIM2定时执行scan函数.
//V2.5 20110930
//1,修改usmart_init函数为void usmart_init(u8 sysclk),可以根据系统频率自动设定扫描时间.(固定100ms)
//2,去掉了usmart_init函数中的uart_init函数,串口初始化必须在外部初始化,方便用户自行管理.
//V2.6 20111009
//1,增加了read_addr和write_addr两个函数.可以利用这两个函数读写内部任意地址(必须是有效地址).更加方便调试.
//2,read_addr和write_addr两个函数可以通过设置USMART_USE_WRFUNS为来使能和关闭.
//3,修改了usmart_strcmp,使其规范化.    
//V2.7 20111024
//1,修正了返回值16进制显示时不换行的bug.
//2,增加了函数是否有返回值的判断,如果没有返回值,则不会显示.有返回值时才显示其返回值.


最新程序2.7版本的usmart.加入对函数返回值的判断.对没有返回值的函数,不会显示其返回值.







ALIENTEK MINISTM32 扩展实验9 USMART V2.7应用.rar

79.97 KB, 下载次数: 517

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

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-25 13:50:34 | 显示全部楼层
哈哈
更新速度太快了
收下了,验证一下
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-10-25 17:15:14 | 显示全部楼层
回复【2楼】yinglively:
---------------------------------
刚好用到,顺便就做了这个功能.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-26 08:55:17 | 显示全部楼层
在函数
u8 usmart_get_fname(u8*str,u8*fname,u8 *pnum,u8 *rval)

最后判断参数数量时

if(parmnum==1)//只有1个参数.
{
fpname[fplcnt]='\0';//加入结束符
if(usmart_strcmp(fpname,"void")==0)parmnum=0;//参数为void,表示没有参数.
}
其中的
if(usmart_strcmp(fpname,"void")==0)parmnum=0;//参数为void,表示没有参数.
是不是应该改为
if(usmart_strcmp(fpname,"void"))parmnum=0;//参数为void,表示没有参数.
因为
usmart_strcmp(fpname,"void")
在两个字符串相等的时候返回为1
才可以达到如果参数是void的字符串,那函数就没有参数

你更改了“usmart_strcmp()”函数的返回数值
我没有看到,所以就没有以上地问题了
属于误报



回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-26 09:00:34 | 显示全部楼层
以上是正确地

你更改了
usmart_strcmp()
函数
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-26 09:04:16 | 显示全部楼层
函数是正确地
你更改了
usmart_strcmp()
函数返回值
没有看到
不好意思
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-26 10:29:49 | 显示全部楼层
回复【7楼】正点原子:
有其他建议随时告诉我.
---------------------------------
哈哈
正好有建议
可以增加访问变量的功能么?
类似于访问函数一样,打印出可以访问的变量,直接读写变量的参数
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-10-26 10:35:01 | 显示全部楼层
回复【8楼】yinglively:
---------------------------------
2.6就增加了啊.
read_addr
只要你有变量的地址,随时可以访问.
write_addr则可以修改变量的值.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2011-1-25
在线时间
6 小时
发表于 2011-10-26 11:35:46 | 显示全部楼层
回复【9楼】正点原子:
回复【8楼】yinglively:
---------------------------------
2.6就增加了啊.
read_addr
只要你有变量的地址,随时可以访问.
write_addr则可以修改变量的值.
---------------------------------

read_addr 和 write_addr
是使用地址直接访问的,如果地址不对,容易造成硬件错误。
是不是可以这样
比如定义
U8 data1;
在程序中列出可以访问的变量名
然后使用
read_addr(data1)
直接访问
因为变量在编译后的地址不确定
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-10-26 11:39:13 | 显示全部楼层
回复【10楼】yinglively:
---------------------------------
这个,你自己增加一个函数即可实现.
很简单.
比如你定义了一个全局变量u8 a;
那么我设置一个函数:
void list_vars(void)
{
      printf("u8 a addr is:%d\r\n",&a);
}
这样就打印出了a的地址了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

86

主题

984

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1850
金钱
1850
注册时间
2013-4-15
在线时间
163 小时
发表于 2014-5-15 13:43:07 | 显示全部楼层
为啥我不能通过USMART设置RTC时间
合肥-文盲
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 03:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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