找回密码
 立即注册
查看: 1027|回复: 3

江湖救急STC8H1K17 打开串口2单片机会重启

[复制链接]

2

主题

0

回帖

18

积分

新手上路

积分
18
发表于 2023-11-22 13:30:14 | 显示全部楼层 |阅读模式
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工作
        }
}


每次开启都会重启单片机


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:447
  • 最近打卡:2025-06-19 15:15:10
已绑定手机

40

主题

2064

回帖

7105

积分

论坛元老

积分
7105
发表于 2023-11-22 19:05:00 | 显示全部楼层
开始时打开了串口2中断,串口2中断函数写了没有?
另外休眠唤醒过程的电压测一下,看是否稳定。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:553
  • 最近打卡:2025-06-19 08:14:24

17

主题

65

回帖

1854

积分

金牌会员

积分
1854
发表于 2023-11-25 08:50:58 | 显示全部楼层
系统复位分为硬件复位和软件复位:
1、硬件复位:
1)上电复位
2)低压复位
3)复位脚复位
4)看门狗复位
2、软件复位:
1)WDT_CONTR看门狗控制寄存器
2)IAR_CONTR IAR控制寄存器
3)RSTCFG 复位配置寄存器

没有串口复位。难道单片机是通过串口供电工作的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:516
  • 最近打卡:2025-06-19 13:18:14
已绑定手机

21

主题

118

回帖

1044

积分

金牌会员

积分
1044
发表于 2023-11-26 17:16:36 | 显示全部楼层
串口2的中断入口去哪了? 重启可能是程序跑飞。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-20 05:02 , Processed in 0.160850 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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