0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机程序死机,可能是这几个原因

如意 来源:CSDN 作者:EDA365???? 2020-06-19 17:18 次阅读

1、意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;

单片机程序死机,可能是这几个原因

2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3、地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4、无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 看门狗
    +关注

    关注

    10

    文章

    540

    浏览量

    70247
  • 单片机系统
    +关注

    关注

    1

    文章

    73

    浏览量

    103668
  • 死机
    +关注

    关注

    0

    文章

    13

    浏览量

    8563
  • 华秋DFM
    +关注

    关注

    20

    文章

    3483

    浏览量

    3903
收藏 人收藏

    评论

    相关推荐

    stm8s003使用HAlt进入了停止模式,单片机死机原因

    各位大侠! stm8s003,我使用HAlt进入了停止模式,电流变小 之后I2C也能够被触发(电流变大),这些看似正常,但是单片机就是死机。 我需要注意哪些地方呢? 谢谢大侠们!!!
    发表于 04-17 06:55

    STM8L单片机复位引脚一直为低的原因

    最近接收到一批返厂的产品,使用的是STM8L052C6单片机,产品问题为死机。在死机情况下,我们用示波器测量了单片机的所有引脚,发现除单片机
    发表于 04-09 07:04

    PLC指示灯异常闪烁可能是哪些原因造成的?

    PLC指示灯异常闪烁可能是由多种原因造成的。以下是一些常见的可能原因
    的头像 发表于 12-05 09:03 4234次阅读

    伺服电机异响可能是哪方面的原因

    伺服电机异响可能是哪方面的原因
    发表于 11-15 07:02

    51单片机串口接收PC发回的数据出错是什么原因造成的?

    51单片机接收PC发回的数据,当数据量在50字节以内,没有发现问题,当数据量加大会出现丢byte的情况,在线调试看到在接收到的内存队列中已经丢了1~3个byte,这有可能是什么原因造成的?
    发表于 11-10 08:07

    单片机ADC读取的数据浮动较大有哪些原因

    单片机ADC读取的数据浮动较大,可能有哪些原因
    发表于 11-02 07:21

    单片机高温死机是怎么回事?

    最近遇到一个问题,单片机用的是16M有源晶振,在高温50度左右的时候死机了,测试电源3.3V纹波为25mV左右,有源晶振正常震荡,且在死机瞬间,晶振波形与电源波形未有抖动。检测有无死机
    发表于 10-27 07:03

    单片机程序又跑飞?从这6个方面查找原因

    单片机程序又跑飞?从这6个方面查找原因
    的头像 发表于 10-26 16:43 439次阅读

    单片机GND连接后晶振5V直流电压不起振的原因

    单片机GND连接后,晶振5V直流电压不起振,原因可能是
    发表于 10-18 07:13

    单片机异常复位原因 简述单片机如何复位

    ,导致程序无限循环或跳转到未知位置,引起CPU无法正常执行程序,最终导致异常复位。 2. 物理故障:比如单片机器件损坏,外接器件损坏,电源短路等,这些原因
    的头像 发表于 10-17 16:44 2285次阅读

    怎么让STM32或其他的单片机死机

    怎么让STM32或其他的单片机死机
    发表于 09-26 06:38

    单片机蜂鸣器不响是什么原因

    单片机蜂鸣器不响是什么原因  单片机蜂鸣器是常见的电子元件之一,可用于报警、提示等场合。然而,在实际应用中,单片机蜂鸣器不响的情况也时有发生。那么,
    的头像 发表于 09-13 10:43 3311次阅读

    单片机写芯片超时是什么原因

    可能会导致程序崩溃或片内资源的浪费,并对系统的正常运行产生负面影响。那么单片机写芯片超时发生的原因是什么呢? 1.硬件问题:单片机与芯片进
    的头像 发表于 09-13 10:43 4001次阅读

    如何有效避免MCU单片机死机问题

    单片机的都可能遇到过因外部干扰或因软件BUG导致死机,这对于有功率负载的电路是极为不利的。现在MCU都有了WDT看门狗,当计数溢出就强制进行复位。但如果单片机因某种
    发表于 07-25 09:17 805次阅读
    如何有效避免MCU<b class='flag-5'>单片机</b><b class='flag-5'>死机</b>问题

    求帮忙解决关于N76E003莫名死机的问题

    1、用N76E003莫名死机,重新加电无效,重新下载程序无法和下载器连接,尝试了几次可以连接了,但未下载程序,之后发现单片机正常工作了,这是什么原因
    发表于 06-25 06:09