圣诞树下的狗 2019-04-05 11:04 采纳率: 100%
浏览 2374
已采纳

STM32串口2发送AT指令给ESP8266,发现8266只执行了第一条指令,另外两条没有执行

通过USB转TTL以及串口调试助手是可以看到STM32是可以正常发送两条AT指令以及字符串的

图片说明

但是插上ESP8266后发现8266只执行了“AT+CIPSTART="TCP","192.168.43.35",8080”这条指令,并且成功连接到了PC服务端,但是剩下的没有发送

图片说明

主函数如下:

#include  "serial.h"
#include  "delay.h"

int main()
{
    u8 i=0;
    //AT+CIPSTART="TCP","192.168.43.35",8080
    u8 at_cipstart[] = {0x41,0x54,0x2b,0x43,0x49,0x50,0x53,0x54,0x41,0x52,0x54,0x3d,0x22,0x54,0x43,0x50,0x22,0x2c,0x22,0x31,0x39,0x32,0x2e,0x31,0x36,0x38,0x2e,0x34,0x33,0x2e,0x33,0x35,0x22,0x2c,0x38,0x30,0x38,0x30,0x0d,0x0a};   

    //AT+CIPSEND=15
    u8 at_cipsend[] = {0x41,0x54,0x2b,0x43,0x49,0x50,0x53,0x45,0x4e,0x44,0x3d,0x31,0x35,0x0d,0x0a};             

    //HELLO WORLD!
    u8 AAA[] = {0x48,0x45,0x4c,0x4c,0x4f,0x20,0x57,0x4f,0x52,0x4c,0x44,0x21,0x0D,0x0A};             

    serial1_init(115200);
    serial2_init(115200);
    delay_init();  

    USART2->SR;

        for(i=0;i<40;i++)//40//AT+CIPSTART="TCP","192.168.43.35",8080(»Ø³µ)
    {
        USART_SendData(USART2, at_cipstart[i]);         
        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
    }
        delay_ms(1000); 

        for(i=0;i<15;i++)//15//AT+CIPSEND=15
    {
        USART_SendData(USART2, at_cipsend[i]);        
        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
    }
        delay_ms(1000);

        for(i=0;i<14;i++)//14//HELLO WORLD!(»Ø³µ)
    {
        USART_SendData(USART2, AAA[i]);         
        while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET);
    }

}

  • 写回答

4条回答 默认 最新

  • 圣诞树下的狗 2019-04-06 14:37
    关注

    不知道为什么就可以了,很奇怪很诡异,好像加了个判断该串口是否发生中断的函数就可以执行了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料