OpenEdv-开源电子网

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

原子兄 关于USMART V2.8问题,问题已解决,顺便提交一个BUG

[复制链接]

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
发表于 2012-8-25 16:25:20 | 显示全部楼层 |阅读模式
捣鼓了许久后,问题已经解决。顺路提交一个BUG。

我的本意是这样子的让串口2输出一个字符串。因为有时候需要回车符,有时候不需要。我把回车符也搞了一个参数。需要的时候就'\n’一下。
问题就在这里了,'\n’并没有被看着一个字符,而是一个错误的参数。
如果写成这样PUT("abcd",i)i是一个数字,那就可以执行了。



  因为想用串口2与SIM908通信。使用了USMART 来协助调试。自己写了一个发送字符串的函数 PUT
    
    void PUT(u8 *p,u8 end)
{
 while(*p!='\0')
 {
  USART2->DR = *p;
  *p++;
  delay_ms(3);
 }
 USART2->DR = end;
 delay_ms(3);
}

第一个参数是要输入的字符串。第二是用来放转义字符。

用意是通过USMART功能。调用PUT让串口二发送AT指令给SIM908。
串口2功能正常。
我在
struct _m_usmart_nametab usmart_nametab[]=
{
#if USMART_USE_WRFUNS==1  //如果使能了读写操作
 (void*)read_addr,"u32 read_addr(u32 addr)",
 (void*)write_addr,"void write_addr(u32 addr,u32 val)", 
#endif
 (void*)delay_ms,"void delay_ms(u16 nms)",
 (void*)delay_us,"void delay_us(u32 nus)",
 (void*)PUT,"void PUT(u8 const *p,u8 end)",
  
};加入了PUT函数
但是,当以PUT(u8 const *p,u8 end)形式调用函数时,总是提示参数错误。
如果以PUT(123,2)形式调用则正常。
小助手返回的是123,2各自对应的十六进制格式。
请教原子兄。这是什么问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-25 19:20:39 | 显示全部楼层
回复【楼主位】寒寒:
---------------------------------
不好意思,你的所谓:当以PUT(u8 const *p,u8 end)形式调用函数时,总是提示参数错误。是怎么个情况?你在串口那边发送PUT(u8 const *p,u8 end)??
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
 楼主| 发表于 2012-8-25 19:27:16 | 显示全部楼层
回复【2楼】正点原子:

---------------------------------
就是这样子的,比如说我要发 AT<回车>。我是把AT放到*p这里,把回车'\n'这个转义字符放到end这里。
那我用的时候就是这样用的PUT("AT",'\n');这样子发送。那就有参数错误的提示了。
但是我把PUT("AT",0X0D0A);这样用就可以实现了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-25 19:29:41 | 显示全部楼层
回复【3楼】寒寒:
---------------------------------
是的,这个当然报错了。
因为在usmart端,收到的‘\n’是4个字符:' \ n '
并不是你要的0X0D0A.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

248

帖子

2

精华

高级会员

Rank: 4

积分
842
金钱
842
注册时间
2012-2-8
在线时间
19 小时
 楼主| 发表于 2012-8-25 19:32:00 | 显示全部楼层
回复【4楼】正点原子:

---------------------------------
这样子啊,那如果我把转义字符作为特殊处理,是不是就可以直接发呢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-25 20:55:52 | 显示全部楼层
可以的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 12:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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