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

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}的替代就可以了,请问这个是参数传递有什么问题吗?谢谢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
qiousanxi
1楼-- · 2019-07-21 13:39
你函数里面,调用if(Flag_UART2_RX==1),不是搞笑呢吗?你外面已经置零了,遇到问题多仿真,多仿真
HXYDJ
2楼-- · 2019-07-21 18:47
好好看看指针相关的资料
美丽的时光机器
3楼-- · 2019-07-21 20:21
strstr((const char*)Rx2Buffer,(const char*)str);这个函数是实现什么功能??字符串对比吗?
chenjingsi
4楼-- · 2019-07-21 22:58
美丽的时光机器 发表于 2018-11-1 17:06
strstr((const char*)Rx2Buffer,(const char*)str);这个函数是实现什么功能??字符串对比吗?

看下原型不就知道了
dby12
5楼-- · 2019-07-22 04:09
 精彩回答 2  元偷偷看……
zc123
6楼-- · 2019-07-22 10:01
if(strstr((const char*)Rx2Buffer, (const char*)str))break;
另外这个函数是在字符串里查找子串是否存在

一周热门 更多>