江湖救急STC8H1K17 打开串口2单片机会重启
STC8H1K17单片机,2个串口公用定时器2,都是115200波特率休眠前关闭串口2,唤醒后开启串口2,每次开启串口2都会自动单片机重启!
void Wifi_Off(void)
{
S2CON= 0x00; //关闭串口2接收
IE2 = 0x00; //关闭串口2中断
_nop_();
_nop_();
_nop_();
_nop_();
IO_Wifi_On_Off=1; //WIFI关闭
P1M0 |= 0x03;
P1M1 |= 0x03;
IO_Wifi_Tx=0; //置0省电
IO_Wifi_Rx=0; //置0省电
Wifi_Timer=0;
Wifi_Tx_Count=0;
Wifi_Fun_Cmd=0;
Wifi_Tx_Cmd=0;
Wifi_Tx_En=0;
Wifi_Off_En=0;
Wifi_Reset_Count=0;
Dev_Sleep_En&=(~WIFI_FUN_EN_BIT); //容许休眠
}
void Wifi_On(uchar cmd) //WIFIģʽ
{
if(IO_Wifi_On_Off)
{
Dev_Sleep_En|=WIFI_FUN_EN_BIT; //禁止休眠
Wifi_Timer=0;
Wifi_Tx_Count=0;
Wifi_Tx_Cmd=0;
Wifi_Tx_En=0;
Wifi_Fun_Cmd=cmd;
Wifi_Off_En=0;
Wifi_Reset_Count=0;
P1M0 &= 0xFC; //双向口
P1M1 &= 0xFC; //双向口
IO_Wifi_Tx=1;
IO_Wifi_Rx=1;
_nop_();
_nop_();
_nop_();
_nop_();
S2CON =0x10; //开启2接收
IE2 = 0x01; //开启串口2中断
_nop_();
_nop_();
_nop_();
_nop_();
IO_Wifi_On_Off=0; //WIFI工作
}
}
每次开启都会重启单片机
开始时打开了串口2中断,串口2中断函数写了没有?
另外休眠唤醒过程的电压测一下,看是否稳定。
系统复位分为硬件复位和软件复位:
1、硬件复位:
1)上电复位
2)低压复位
3)复位脚复位
4)看门狗复位
2、软件复位:
1)WDT_CONTR看门狗控制寄存器
2)IAR_CONTR IAR控制寄存器
3)RSTCFG 复位配置寄存器
没有串口复位{:dizzy:}。难道单片机是通过串口供电工作的。{:sweat:} 串口2的中断入口去哪了? 重启可能是程序跑飞。
页:
[1]