请问大家我这个函数的参数有什么问题?
有如下函数:send_at_cmd("AT\r\n","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)
{
Delay_ms(1000);
MCU_IWDG_Init ();
USART2_TxString("AT\r\n");
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函数中红色部分用绿色的替代就可以了,请问这个是AT_check_cmd()函数的参数传递有问题吗?要怎么解决,谢谢。