请问大家我这个函数的参数有什么问题?

2019-07-21 08:21发布

本帖最后由 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&#188;&#198;ê±
                {
                        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}的替代就可以了,请问这个是参数传递有什么问题吗?谢谢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。