找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1558|回复: 4
收起左侧

单片机串口发送AT+RST指令后程序复位问题

[复制链接]
ID:1013010 发表于 2022-3-29 21:07 | 显示全部楼层 |阅读模式
本想要通过串口2给 ESP8266-12F 发送AT+RST指令,使其模块复位,但是发送后发现程序也跟着复位,重复执行。单片机程序如下:

#include<stc12c5a60s2.h>
#include<stdio.h>

#define uchar unsigned char
#define uint  unsigned int
        
#define S2RI 0x01   //串口2接收中断中断请求标志位
#define S2TI 0x02   //串口2发送中断请求标志位

uchar uart1Receive[100];   //串口1的接收数据
uchar uart2Receive[100];         //串口2的接收数据


//延时函数
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
        TH1 = TL1 = 0xfd;//9600b/s
        PCON = 0;    //波特率不加倍
        
        TR1=1;   //开启定时器T1

        //串口2只能采用独立波特率发生器 ESP8266波特率设为9600
        S2CON = 0x50;   //串口2工作在方式1  
  BRT = 0xfd;     //独立波特率发生器初值
  AUXR = 0x10;    //BRTR=1 独立波特率发生器开始计数

}


//串口1 发送 byte
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++;
        }
}


void main()
{        
        uart_init();
        delay_ms(100);
        uart1_send_string("Uart Init!\r\n");
        delay_ms(500);
        uart2_send_string("AT+RST\r\n");
        delay_ms(500);
        uart1_send_string("ESP RST!\r\n");
        while(1);
}




51hei图片20220329210504.png

回复

使用道具 举报

ID:857072 发表于 2022-3-29 23:50 来自手机 | 显示全部楼层
8266上电时说是有400-500ma电流,会不会是把你的单片机电源拉低重启了。
回复

使用道具 举报

ID:123289 发表于 2022-3-30 08:23 | 显示全部楼层
发送其它的也这样吗?
回复

使用道具 举报

ID:1013784 发表于 2022-3-30 11:27 | 显示全部楼层
8266有个复位引脚,低电平触发,你可以单独用一个端口引脚来控制它复位,不用命令也行
回复

使用道具 举报

ID:1013010 发表于 2022-3-30 13:24 | 显示全部楼层
yzwzfyz 发表于 2022-3-30 08:23
发送其它的也这样吗?

只有发送AT+RST后才会不断重启,其他会有OK,怀疑是硬件问题
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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