OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2886|回复: 1

stm32f4 痛过art_8266_sned_cmd()函数向esp8266发送命令失败求解?

[复制链接]

5

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-11-24
在线时间
8 小时
发表于 2019-12-16 00:45:40 | 显示全部楼层 |阅读模式
5金钱
直接贴代码如下:while(esp_8266_send_cmd("AT","OK",20))
{
..................
}

u8 esp_8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
        printf("执行进esp_8266_send_cmd()\r\n");
        u8 res=0;
        USART3_RX_STA=0;
        printf("USART3_RX_STA=0\r\n");
        u3_printf("%s\r\n",cmd);        //通过串口3发送命令给esp8266
        printf("excute u3_printf...\r\n");
        if(ack&&waittime)                    //需要等待应答
        {
                printf("进入第一个if\r\n");
                while(--waittime)            //等待倒计时
                {
                        printf("进入if_while\r\n");
                        delay_ms(10);
                        if(USART3_RX_STA&0X8000)//检测USART3_RX_STA最高位是否为1,若为1则接收到数据完成
                        {
                                printf("进入到第二个if");
                                if(esp_8266_check_cmd(ack))//检测得到的应答,即是否接到应答结果
                                {
                                        printf("进入到第三个if");
                                        printf("ack:%s\r\n",(u8*)ack);//接到了应答结果将其通过串口1输出
                                        break;//得到有效数据
                                }
                                        USART3_RX_STA=0;
                        }
                }
                if(waittime==0)
                {
                        printf("返回值到底是几.......\r\n");
                        res=1; //返回值为1时,发送失败
                }
        }
        printf("执行if语句\r\n");
        return res;
}

由主程序中的while(esp_8266_send_cmd("AT","OK",20)),调用执行u8 esp_8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
。我是通过串口1打印执行信息,发现红色部分的if条件判断未执行进去,也就是说判断条件不成立,USART3_RX_STA最高位不为1,是未收到esp8266的返回信息嘛?个人觉得u8 esp_8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)函数写错了?因为蓝色部分的的if()判断总会在执行完while()循环后被执行到,那么res就被赋为1,函数返回1(发送失败)。请帮忙解答一下,不胜感激!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14407
金钱
14407
注册时间
2018-8-3
在线时间
1156 小时
发表于 2019-12-16 11:18:08 | 显示全部楼层
函数是没有问题的 你这边串口三的驱动是直接照搬的么 可以仿真看看 发AT指令之后 能不能进串口三的中断  能进代表8266 有反馈数据回来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 20:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表