久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2318|回復: 3
打印 上一主題 下一主題
收起左側

串口向ESP8266發送AT指令卡死在第3條,后續無響應

[復制鏈接]
回帖獎勵 1 黑幣 回復本帖可獲得 1 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
想利用 串口1 向 ESP8266-12F 發送AT指令連接上阿里云平臺,并且通過串口2轉發串口1接收到的數據,來查看是否正常工作。 此前已經配置好WIFI信息,會自動連接。  用串口調試助手向WIFI模塊發送則正常連上平臺。
但現在發現AT指令只能發送前兩條,后面的無反應。   







附上代碼:
#include<stc12c5a60s2.h>
#include<stdio.h>

#define uchar unsigned char
#define uint  unsigned int
        
#define S2RI 0x01   //串口2接收中斷中斷請求標志位
#define S2TI 0x02   //串口2發送中斷請求標志位

uchar uart1Receive[500];   //串口1的接收數據
uchar uart2Receive[500];         //串口2的接收數據

uint point1;
uchar temp1;

uint point2;
uchar temp2;

// AT指令
code uchar AT_RST[] = "AT+RST\r\n";
code uchar AT_CWMODE[] = "AT+CWMODE=1\r\n";
code uchar AT_CIPSNTPCFG[] = "AT+CIPSNTPCFG=1,8,\"ntp1.aliyun.com\"\r\n";
code uchar AT_MQTTUSERCFG[] = "AT+MQTTUSERCFG=0,1,\"NULL\",\xxxxxxxxx(此處為用戶名)\",\xxxxxxxxxx(此處密碼)\",0,0,\"\"\r\n";

void delay_ms(uint x)
{        uint j;
        for(;x>0;x--)
                for(j=125;j>0;j--);
}



void uart_init() //串口初始化
{        //fosc=11.059MHZ
        SCON = 0x50; //串口方式1
        TMOD = 0x20; //T1采用定時方式2  8-bite 自動重裝
        TH1 = TL1 = 0xfd;//9600b/s
        PCON = 0;    //波特率不加倍
        
        TR1=1;   //開啟定時器T1
        EA=1;    //打開總中斷
        ES=1;    //打開串口1中斷

        //串口2只能采用獨立波特率發生器
        S2CON = 0x50;   //串口2工作在方式1  
        BRT = 0xfd;     //獨立波特率發生器初值
        AUXR = 0x10;    //BRTR=1 獨立波特率發生器開始計數
       //IE2 = 0x01;      //開串口2中斷  ES2=1 接收中斷暫時不用
}


//串口1 發送 1byte 數據
void uart1_send_byte(uchar byte)
{
        SBUF = byte;
        while(TI==0); //等待發送完成
        TI=0; //清TI標志位
}


//串口1 發送 字符串
void uart1_send_string(uchar *str)
{
        while(*str!='\0')
        {
                uart1_send_byte(*str);
                str++;
        }
}


//串口2 發送 1byte 數據
void uart2_send_byte(uchar byte)
{
        S2BUF = byte;
        while(!(S2CON&S2TI)); //等待發送完成 等待S2TI=1
        S2CON&=~S2TI;        //清S2TI標志位 令S2TI=0
}


//串口2 發送 字符串
void uart2_send_string(uchar *str)
{
        while(*str!='\0')
        {
                uart2_send_byte(*str);
                str++;
        }
}


//串口1中斷函數  
void uart1_Interrupt() interrupt 4  
{  
    if(RI==1)  
    {  
        RI=0;  
        temp1=SBUF;
        uart1Receive[point1++]=temp1;
        if(temp1=='\0')
                                        {
            point1=0;
          }
        if(point1==500)
                                        {
          point1=0;
                                        }
    }  
}


//串口2中斷函數             串口2做轉發,接收暫時不啟動
/*void UART_2Interrupt() interrupt 8  
{  
                EA=0;                  //關閉總中斷
    if(S2CON&S2RI)  
    {  
        S2CON&=~S2RI;         
        temp2=S2BUF;
        uart2Receive[point2++]=temp2;
                        
        if(temp2=='\0')
        {
                point2=0;
        }
                                
        if(point2>=500)
        {
                point2=0;
        }
    }
                EA=1;                  //打開總中斷               
}*/


//串口2轉發串口1接收的數據
void uart1_to_uart2Send()
{        uint i;
        uart2_send_string(uart1Receive);  //  uart1Receive[500];
        for(i=0;i<=500;i++)
                {  
                        uart1Receive[ i]=0;                                                           
          }
}


void wifi_init()
{
        uart1_send_string(AT_CWMODE);
        uart1_to_uart2Send();
        delay_ms(500);

        uart1_send_string(AT_CIPSNTPCFG);
        uart1_to_uart2Send();
        delay_ms(500);
        
        uart1_send_string("AT\r\n");
        delay_ms(100);
        uart1_to_uart2Send();
        delay_ms(500);
        
        //uart1_send_string(AT_MQTTUSERCFG);
        //delay_ms(100);
        //uart1_to_uart2Send();
        //delay_ms(500);
        
        }


void main()
{        uint i;
        point1=0;
        point2=0;
        uart_init();      //進行串口初始化     
        delay_ms(100);
        uart2_send_string("Uart Init!\r\n");
        delay_ms(500);

        for(i=0;i<=500;i++)    //清空串口1的接收
                {  
                        uart1Receive[ i]=0;                                                           
          }


        wifi_init();
               
        while(1);
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:506018 發表于 2022-4-6 11:37 | 只看該作者
可以嘗試換個思路,將初始化函數放在while循環里運行一段時間
回復

使用道具 舉報

板凳
ID:506018 發表于 2022-4-6 12:56 | 只看該作者
可以嘗試換個思路,將wifi初始化函數放到while里面運行一段時間,看看測試情況,監測是否卡死了
回復

使用道具 舉報

地板
ID:1002550 發表于 2022-4-6 17:05 | 只看該作者
重刷AT固件,后邊就像樓上所說的將將wifi初始化函數放到while里面運行一段時間,看看測試情況。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 韩日一区二区三区 | 精品伊人久久 | 久久久久国产 | www.五月婷婷.com| 男女在线免费观看 | 久久精点视频 | 欧美又大粗又爽又黄大片视频 | 国产综合久久 | 免费av手机在线观看 | 国产乱码精品一品二品 | 久久久久久国产精品 | 亚洲天堂中文字幕 | 国产一二区视频 | 国产精品国产三级国产aⅴ入口 | 99热都是精品 | 成人黄色电影在线观看 | 国产十日韩十欧美 | 国产精品久久久久久久久久了 | 亚洲精色| 亚洲国产精品久久 | 性欧美精品一区二区三区在线播放 | 成人精品免费视频 | 欧美成年人视频在线观看 | 亚洲视频中文字幕 | 中文精品视频 | 国产2区| 五月天婷婷久久 | 亚洲精品资源 | 九九九久久国产免费 | 久久久久久国产精品免费免费 | 毛片一区二区 | 亚洲一区二区三区在线 | 国产不卡一区在线观看 | 欧美精品日韩 | 午夜三级在线观看 | 国产激情偷乱视频一区二区三区 | 看av片网站 | 爱高潮www亚洲精品 中文字幕免费视频 | 青青草网站在线观看 | 欧美激情亚洲激情 | 欧美日韩精品综合 |