本帖最后由 dby12 于 2018-11-2 10:10 编辑
我使用正点原子的代码时有如下函数:
send_at_cmd("AT
","OK",5));
函数功能是向模块发送“AT”命令,如果被测模块返回OK,则send_at_cmd函数返回0,否则返回1.
函数代码如下:
u8 send_at_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
u8 res=0;
Rx2Counter=0;
Flag_UART2_RX=0;
while((USART2->SR&0X40)==0);
if((u32)cmd<=0XFF)
{
while((USART2->SR&0X40)==0);
USART2->DR=(u32)cmd;
}else USART2_TxString(cmd);
if(ack&&waittime)
{
while(--waittime) //μè′yμ1¼Æê±
{
Delay_ms(1000);
MCU_IWDG_Init ();
USART2_TxString("AT
");
Rx2Counter=0;
if(Flag_UART2_RX==1)
{
Flag_UART2_RX=0;
if(AT_check_cmd(ack))break;
// if(strstr((const char*)Rx2Buffer,"OK"))break;
}
}
if(waittime==0)res=1;
}
return res;
}
u8* AT_check_cmd(unsigned char *str)
{
char *strx=0;
if(Flag_UART2_RX==1)
{
Flag_UART2_RX=0;
strx=strstr((const char*)Rx2Buffer,(const char*)str);
}
return (u8*)strx;
}
我将代码移植过来以后,send_at_cmd函数中红 {MOD}部分用绿 {MOD}的替代就可以了,请问这个是参数传递有什么问题吗?谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
确认一个字符串是否包含另一个字符串。
前面清零不影响串口再次收到数据呀。发送AT以后,串口收到数据就置1.
只看到函数开头的清零,没注意到在if(Flag_UART2_RX==1)这个之前还有一句清零,谢谢提醒。
一周热门 更多>