找回密码
 立即注册
查看: 190|回复: 13

MCU死机,无法唤醒

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 09:24:32 | 显示全部楼层 |阅读模式
使用芯片:STC32G12K128, 目前产品已经出货约3000套,现在客户陆续退回来5台,
现象:产品处于卡死状态,对充电/按键/通讯等行为无反应;且断电MCU重新供电后恢复正常,测量了一些状态后发现芯片处于进入休眠后的状态,且充电/按键/通讯都无法唤醒;
唤醒的中断源有:按键检测中断,充电唤醒IO口中断,负载检测IO口中断,通讯检测IO口中断;此外通过外部晶振32.768k晶振设置了定时1小时唤醒的RTC;卡死的产品没有RTC唤醒的现象,且对设置的中断均无反应;
备注:产品已开启了看门狗;且我检查代码,并未发现有关闭中断IO的数字输入语句,麻烦帮忙看一下,这个死机问题是什么导致的?

进入休眠的部分代码

进入休眠的部分代码

MCU电源供电

MCU电源供电


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:347
  • 最近打卡:2026-03-07 12:55:14

842

主题

1万

回帖

2万

积分

管理员

积分
22606
发表于 2026-2-9 17:43:19 | 显示全部楼层

截图202602091744088301.jpg

截图202602091740395150.jpg

截图202602091743151938.jpg



截图202602091742203856.jpg

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2026-03-06 08:05:01

9

主题

73

回帖

905

积分

高级会员

积分
905
发表于 2026-2-9 10:43:08 | 显示全部楼层
你可以做个日志,把重要代码的执行过程,记录到日志中,对于那些死机的,这样就能看到究竟是卡死到那一步不能继续运行了
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:657
  • 最近打卡:2026-03-07 05:53:33

51

主题

255

回帖

1263

积分

金牌会员

积分
1263
发表于 2026-2-9 10:48:26 | 显示全部楼层
正在做掉电唤醒的程序,关注下。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 11:09:29 | 显示全部楼层
青穗*** 发表于 2026-2-9 10:43
你可以做个日志,把重要代码的执行过程,记录到日志中,对于那些死机的,这样就能看到究竟是卡死到那一步不 ...

嗯嗯,你说的是一种后续的处理方法而且不是解决方案,都是现在的问题是客户需要现在就找出原因给出解决方案,客户的设备不可能给你用来测试排除问题的
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 11:10:26 | 显示全部楼层
wonde*** 发表于 2026-2-9 11:09
嗯嗯,你说的是一种后续的处理方法而且不是解决方案,都是现在的问题是客户需要现在就找出原因给出解决方 ...

而且这个问题不是必现的,这个就很麻烦,我也是没招了,不知道STC有没有什么办法
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2026-03-06 08:05:01

9

主题

73

回帖

905

积分

高级会员

积分
905
发表于 2026-2-9 11:50:11 | 显示全部楼层
第一,怎么确定,就算现在找出这个解决办法,因为问题不是必现的,你怎么确定你解决了。所以我说的程序上这部分加上日志,你还得弄
第二,可以外边挂上一个电路,主要作用是一段时间能没有和这个电路通信,就把你这个产品重启供电。
第三,给你看一下我的低功耗操作逻辑
  1.                     //低功耗进入
  2.                     if (myADCDat.ad_Vref>1218 && PIN_KEY_Get()==0)  //若电压低于4V,并且按键检测到0
  3.                     {
  4.                         //关闭耗电设备
  5.                         P35 = 1;  //关闭红灯
  6.                         P36 = 1;  //关闭绿灯
  7.                         P33 = 0;  //取消阀动作
  8.                         P54 = 0;  //不短路5.1K电阻
  9.                         RecordAdd(RECORD_TYPE_POWER_DOWN);  //掉电记录
  10.                         EXT0_MODE_RiseFall();  //设置外部中断边沿触发
  11.                         EXT0_ENABLE();  //使能外部中断
  12.                         //将所有端口置为高阻状态
  13.                         P1M1=0xFF; P1M0=0;
  14.                         P3M1=0xFF; P3M0=0;
  15.                         P5M1=0xFF; P5M0=0;
  16.                         //将一些引脚的数字输入功能给关闭
  17.                         P1IE=0x00; P3IE=0x04;
  18.                         
  19.                         ADC_CONTR &= ~0x80;  //关闭ADC电源
  20.                         CMPCR1 &= ~0x80;  //关闭比较器
  21.                         while (1)  //避免被非唤醒目标唤醒
  22.                         {
  23.                             SYSTEM_PD();  //进入掉电模式
  24.                             _nop_();
  25.                             _nop_();
  26.                             _nop_();
  27.                             _nop_();
  28.                             FeedDog();
  29.                         }
  30.                     }
复制代码

  1. void X0_ISR() interrupt INTERRUPT_X0
  2. {
  3.     RTC_TimeGet(&rtc);
  4.     Flash_WritesU8(MCU_STORAGE_RTC,(u8 *)&rtc,sizeof(rtc));
  5.     SYSTEM_RESET_ISP();
  6. }
复制代码
微信qsssuv
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:719
  • 最近打卡:2026-03-07 07:41:42
已绑定手机

97

主题

7247

回帖

1万

积分

超级版主

积分
13780
发表于 2026-2-9 12:51:14 | 显示全部楼层
主频接近极限频率需要在初始化时正确设置IAP_TPS并设置IRCDB=16尤其是需要使用省电模式唤醒的情况
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 13:39:36 | 显示全部楼层
青穗*** 发表于 2026-2-9 11:50
第一,怎么确定,就算现在找出这个解决办法,因为问题不是必现的,你怎么确定你解决了。所以我说的程序上这 ...

嗯嗯,你说的也是;日志确实后面需要加上;外挂电路这个搞不了,产品做了认证至少硬件层面动不了;感谢分享
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 13:40:10 | 显示全部楼层
Debu*** 发表于 2026-2-9 12:51
主频接近极限频率需要在初始化时正确设置IAP_TPS并设置IRCDB=16尤其是需要使用省电模式唤醒的情况 ...

目前MCU频率为24M,这个是否接近极限频率
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2026-02-25 18:32:34

3

主题

19

回帖

89

积分

注册会员

积分
89
发表于 2026-2-9 14:43:48 | 显示全部楼层
Debu*** 发表于 2026-2-9 14:19
后缀-24A的可能算是,不管这些直接加上就行,又没有坏处

目前代码确实没有加IRCDB=16这句,我排查我们用的这个芯片的后缀是-35I;我想知道不加的话会出现怎么样;手册上说的稳定是什么意思,会是导致死机的原因吗
截图202602091441038252.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-7 16:50 , Processed in 0.123637 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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