初级会员

- 积分
- 162
- 金钱
- 162
- 注册时间
- 2015-4-13
- 在线时间
- 0 小时
|
5金钱
大家帮忙看一下吧!
u8 sim900a_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
USART2_RX_STA=0;
if((u32)cmd<=0XFF)
{
while(DMA1_Channel7->CNDTR!=0); //等待通道7传输完成
USART2->DR=(u32)cmd;
}else u2_printf("%s\r\n",cmd);//发送命令
if(ack&&waittime) //需要等待应答
{
while(--waittime) //等待倒计时
{
delay_ms(10);
if(USART2_RX_STA&0X8000)//接收到期待的应答结果
{
if(sim900a_check_cmd(ack))break;//得到有效数据
USART2_RX_STA=0;
}
}
if(waittime==0)res=1;
}
return res;
}
问题:以上红色代码是什么意思?cmd为什么要和0XFF比较???不懂。。。。
|
最佳答案
查看完整内容[请看2#楼]
具体代码不是我写的。
但是我隐约记得:
1)u8 *cmd 这是入口参数,,,所以(u32) cmd的值,是cmd的地址。
如果是正常的AT指令发送:sim900a_send_cmd("AT+CMGF=1","OK",200) 那么毫无疑问,cmd的值是0x8000000+x ,也就是flash的某个地址。
如果是0x1A,发送方式是这样的:sim900a_send_cmd((u8*)0X1A,"SEND OK",1000)
那么cmd的值就是0x1A。
|