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

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

3天内不再提示

关于单片机程序跑飞死机的原因

GReq_mcu168 来源:玩转单片机 2020-08-04 17:13 次阅读

经常接触单片机的朋友,肯定遇到过单片机程序跑飞的问题。由于程序较为复杂,所以一旦出现跑飞的现象就比较难以查找错误出现的地方,网络上对错误的解释和解决方法也比较五花八门,并不方便查找。小编特意帮大家整理了关于单片机程序跑飞死机的原因,大家快来看看能不能在其中找到自己想要答案吧。

单片机程序死机,跑飞了
可以从以下几个方面查找原因:

1、意外中断

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

2、中断变量处理不妥

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

3、地址溢出,常见错误为指针操作错误

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

4、无条件的死循环

比如使用while(x),等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制。

5、看门狗没有关闭

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

6、堆栈溢出

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

通过本篇文章,大家是否找到了自己想要的问题解决方法了呢?就算没有找到,本篇文章也能帮助大家在一定程度上预防跑飞现象的发生。

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

    关注

    6002

    文章

    43982

    浏览量

    620899
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595

原文标题:单片机程序总跑飞?小技巧帮你忙

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    HC32L136 M0+内核在写FLASH时程序原因

    使用一款华大的HC32L136单片机M0+的内核64k的flash,在0x0-0x8000放入bootloader 在0x8000-0xFFFF放入用户代码,在全速 执行用户代码中FLASH操作
    发表于 04-18 06:04

    调试FreeRTOS程序,通过IAP升级后程序原因

    最近调试FreeRTOS程序,发现直接用IAR下载APP后程序运行正常,但是通过IAP升级后却发现程序(因为是IAP升级,无法调试App
    发表于 04-08 06:25

    单片机Freertos怎么样?

    单片机Freertos好移植么?参考资料好不好找?
    发表于 03-25 15:22

    STM32F207死机PC原因?怎么解决?

    STM32F207ZET6,使用过程发现有死机,分析了一下过程,是在正常刷屏的过程中触发了一次ADC的DMA完成中断,中断中执行了一些保存数据到对应结构体的任务,然后中断返回的时候,pc指针
    发表于 03-19 07:04

    AURIX2G系列的单片机多核程序应该怎么配置?

    AURIX2G系列的单片机多核程序应该怎么配置,感觉没有头绪
    发表于 02-20 06:15

    TC233使用QSPISPI程序单片机不定时复位的原因

    使用TC233使用QSPI外设,SPI作为从和其他单片机进行SPI通讯,不定时重启,如果数据收发比较快的话复位频率就比较高,如果延时一秒发送同样会复位,只是频率会低一些,另外我是用SPI3当从
    发表于 02-02 07:58

    单片机在实际应用中怎样防干扰?

    单片机在实际应用中怎样防止静电获得其他带来的干扰导致程序
    发表于 11-09 07:25

    51单片机可以操作系统吗?

    据说单片机可以上操作系统,那51单片机可以上操作系统吗,感觉51单片机性能那么差,还能跑操作系统? 如果可以的话都可以那些操作系统呢?
    发表于 11-06 06:59

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

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

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

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

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

    单片机异常复位原因 简述单片机如何复位  单片机异常复位是指在正常运行期间,单片机出现了不可恢复的故障,导致异常复位。常见的异常复位
    的头像 发表于 10-17 16:44 2313次阅读

    程序后可以恢复到的地方继续运行吗?

    程序后可以恢复到的地方继续运行吗
    发表于 10-12 07:03

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

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

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

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

    为什么单片机会突然死机

    单片机
    YS YYDS
    发布于 :2023年06月19日 18:55:34