OpenEdv-开源电子网

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

GSM某些程序看不懂!!!好人一生平安

[复制链接]

4

主题

5

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-8-13
在线时间
0 小时
发表于 2014-8-13 10:03:03 | 显示全部楼层 |阅读模式
5金钱
if((u32)cmd<=0XFF)
{
while(DMA1_Channel7->CNDTR!=0);
USART2->DR=(u32)cmd;
}else u2_printf("%s\r\n",cmd);
*cmd = “AT+CMGF=1”,为什么要cmd和0xff比较?真心看不懂,求路过的大神指点一下!好人一生平安

最佳答案

查看完整内容[请看2#楼]

为什么要cmd和0xff比较?这是原子的例程,我的理解:1,原子DMA例程里DMA的传输模式是设置为以字节(u8类型)为单位传送;2,如果cmd<=0XFF,cmd指的是0x0-0xff之间的ASCII码。比如0-9电话号码数,3,while(DMA1_Channel7->CNDTR!=0);等待DMA传输结束,4,USART2->DR=(u32)cmd;将每个u8类型强制类型转换为u32,赋给USART2->DR寄存器,这时硬件自动将数据发给sim900a了,5,else u2_printf("%s\r\n",cmd);如果cmd不 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-8-13 10:03:04 | 显示全部楼层
为什么要cmd和0xff比较?这是原子的例程,我的理解:1,原子DMA例程里DMA的传输模式是设置为以字节(u8类型)为单位传送;2,如果cmd<=0XFF,cmd指的是0x0-0xff之间的ASCII码。比如0-9电话号码数,3,while(DMA1_Channel7->CNDTR!=0);等待DMA传输结束,4,USART2->DR=(u32)cmd;将每个u8类型强制类型转换为u32,赋给USART2->DR寄存器,这时硬件自动将数据发给sim900a了,5,else u2_printf("%s\r\n",cmd);如果cmd不是u8类型,则直接将cmd发给sim900a模块;这时的cmd可能就是字符串了。

我是这样理解的,欢迎指正!谢谢!
手艺人要内外兼修。
回复

使用道具 举报

4

主题

5

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-8-13
在线时间
0 小时
 楼主| 发表于 2014-8-13 15:59:30 | 显示全部楼层
回复【2楼】wangyan915205:
---------------------------------
嗯嗯!很详细,衷心感谢!
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12691
金钱
12691
注册时间
2012-11-26
在线时间
3710 小时
发表于 2014-8-13 22:11:02 | 显示全部楼层
0x1A的区别

只是判定是不是要发送了
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 12:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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