找回密码
 立即注册
查看: 61|回复: 6

stc32G为什么空闲模式IDL写0就死机

[复制链接]
已绑定手机

309

主题

591

回帖

2991

积分

金牌会员

积分
2991
发表于 昨天 11:33 | 显示全部楼层 |阅读模式
截图202611111132079056.jpg

stc32G为什么空闲模式IDL写0就死机


截图202611111133448812.jpg
手册上写0无影响
回复

使用道具 举报 送花

已绑定手机

74

主题

1028

回帖

3803

积分

论坛元老

初出茅庐&无甚本事

积分
3803
发表于 昨天 14:10 | 显示全部楼层
自动清0机制
写0可能hardfault
偶尔看看玩玩
回复

使用道具 举报 送花

已绑定手机

52

主题

2752

回帖

9626

积分

论坛元老

积分
9626
发表于 昨天 14:13 | 显示全部楼层
IDL写0本身不会导致死机,排查一下是不是其它因素导致的。
附件例子可以验证,通过串口打印信息或者指示灯判断MCU工作状态。
  1.             if(++SleepDelay >= 3)   //3秒后睡眠
  2.             {
  3.                 SleepDelay = 0;
  4.                 P2 = 0xff;      //休眠状态,指示灯关闭
  5.                 if(INT0 && INT1)    //两个中断都是高电平时才进入睡眠,下降沿唤醒。
  6.                 {
  7.                     SleepDelay = 0;
  8.                     printf("MCU sleep.\r\n");
  9.                     INT0_Flag = 0;
  10.                     INT1_Flag = 0;
  11.                     INT2_Flag = 0;
  12.                     INT3_Flag = 0;
  13.                     INT4_Flag = 0;
  14.                                     
  15.                     PCON |= 0x02;   //Sleep
  16.                     _nop_();
  17.                     _nop_();
  18.                     _nop_();
  19.                     _nop_();
  20.                     _nop_();
  21.                     _nop_();
  22.                     _nop_();
  23.                     
  24.                     IDL = 0;    //test
  25.                     
  26.                     if(INT0_Flag)
  27.                     {
  28.                         printf("INT0 wakeup.\r\n");
  29.                     }
  30.                     if(INT1_Flag)
  31.                     {
  32.                         printf("INT1 wakeup.\r\n");
  33.                     }
  34.                     if(INT2_Flag)
  35.                     {
  36.                         printf("INT2 wakeup.\r\n");
  37.                     }
  38.                     if(INT3_Flag)
  39.                     {
  40.                         printf("INT3 wakeup.\r\n");
  41.                     }
  42.                     if(INT4_Flag)
  43.                     {
  44.                         printf("INT4 wakeup.\r\n");
  45.                     }
  46.                 }
  47.             }
复制代码

休眠唤醒-STC32.zip

9.1 KB, 下载次数: 1

回复

使用道具 举报 送花

已绑定手机

309

主题

591

回帖

2991

积分

金牌会员

积分
2991
 楼主| 发表于 昨天 15:06 | 显示全部楼层
乘风*** 发表于 2026-11-11 14:13
IDL写0本身不会导致死机,排查一下是不是其它因素导致的。
附件例子可以验证,通过串口打印信息或者指示灯 ...

STCFOC.zip (874.98 KB, 下载次数: 1)


找不到原因哦,IDL写0没有死机,我按复位键是有反应得
写1功能正常,就写0不正常
帮我看下什么原因,感觉像硬件级得故障

回复

使用道具 举报 送花

83

主题

8321

回帖

1万

积分

超级版主

积分
17948
发表于 昨天 15:40 | 显示全部楼层
写0不会影任何程序,你程序可能有别的问题。
进入空闲模式:
IDLE = 1;
NOP(5);   //至少3个NOP
回复

使用道具 举报 送花

已绑定手机

309

主题

591

回帖

2991

积分

金牌会员

积分
2991
 楼主| 发表于 昨天 16:11 | 显示全部楼层
梁*** 发表于 2026-11-11 15:40
写0不会影任何程序,你程序可能有别的问题。
进入空闲模式:
IDLE = 1;

不可能吧,写1正常,写0就不正常
回复

使用道具 举报 送花

83

主题

8321

回帖

1万

积分

超级版主

积分
17948
发表于 昨天 21:37 | 显示全部楼层
完全无影响的,你用我的程序测试下,直接下载test.hex测试,下载时选择24MHz,P1.0输出500Hz方波,高电平1ms,低电平1ms,IDL=0; 对程序没有任何影响。



#define MAIN_Fosc                24000000UL        //定义主时钟
#include        "..\STC32G.h"

//========================================================================
// 函数: void  delay_ms(u16 ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 1~65535ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注:
//========================================================================
void  delay_ms(u16 ms)
{
     u16 i;
         do
         {
                i = MAIN_Fosc / 6000;
                while(--i)        ;
     }while(--ms);
}

/**********************************************/
void main(void)
{
        WTST  = 0;
        CKCON = 0;
        EAXFR = 1;        //SFR enable

        P1n_push_pull(Pin1+Pin0);

        while (1)
        {
                delay_ms(1);
                IDL = 0;
                P10 = ~P10;
        }
}

test.hex (232 Bytes, 下载次数: 0)

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-11-12 07:31 , Processed in 0.072734 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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