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);
    }

}

3个回答

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

你可以看看ESP8266返回的信息,STM32发送完命令后,ESP8266会有数据回复,看看回复的数据是不是对的呢。

weixin_42612757
圣诞树下的狗 我用的串口二发的,应该怎么从串口二接受8266返回的消息,并送串口一发送呢?
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问