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

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

3天内不再提示

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

jf_pJlTbmA9 来源:网络 作者:网络 2023-10-26 16:43 次阅读

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

1、意外中断

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

2、中断变量处理不妥

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

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

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

4、无条件的死循环

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

5、看门狗没有关闭

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

6、堆栈溢出

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

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

来源:网络
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

审核编辑 黄宇

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

    关注

    6001

    文章

    43973

    浏览量

    620841
  • 看门狗
    +关注

    关注

    10

    文章

    541

    浏览量

    70256
收藏 人收藏

    评论

    相关推荐

    如何应对程死机

    单片机程序是在所难免的,大家在处理这个问题一般都采取那些方式呢?
    发表于 07-17 21:35

    单片机从这里学

    从这里提高单片机程序设计,,,,,刚刚的
    发表于 10-22 12:58

    程序,请教关于单片机的ROM RAM

    程序在运行中,遇到嵌套太深的函数,就容易,自动复位,我怀疑是变量使用过多,压栈溢出程序编译正常,0错误,0警告单片机的idata256字
    发表于 04-13 21:43

    [转帖]单片机程序死机六大原因

    单片机程序死机,飞了可以从以下几个方面查找原因:1.意外中断。是否打开了某个中断,但是没有响应
    发表于 04-06 13:25

    单片机程序死机原因

    转帖:单片机程序死机原因单片机程序死机,
    发表于 10-13 20:49

    单片机/ARM死机或的诊断疗法

    抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一突出问题,便是单片机运行过程中经常出现的程序
    发表于 08-26 16:16

    单片机/ARM死机或常见的查找方法

    抗干扰的完善和补充,作用也非常重要,因为大量的干扰通常并不能影响系统内硬件的运作,却常会使系统的软件无法正常运行,单片机应用的一突出问题,便是单片机运行过程中经常出现的程序
    发表于 08-27 09:34

    你的单片机程序飞了,原因在这!

    单片机程序死机,飞了可以从以下几个方面查找原因:1. 意外中断。是否打开了某个中断,但是没有响
    发表于 10-08 09:51

    单片机/ARM死机或的诊断疗法

    经常出现的程序现象。 在单片机系统中,因为干扰的原因,在非预期的情况下,使得程序计数器PC
    发表于 05-06 15:10

    51单片机12分频的原因是什么

    的整数倍,便于计算指令时间。AT公司的AT89系列51单片机,工艺上存在不足,分频后频率降低,程序得以稳定执行,不易。AT新出的单片机
    发表于 07-13 09:23

    FPGA状态原因是什么

    FPGA状态为什么会呢?FPGA状态原因
    发表于 11-01 07:52

    是什么原因造成单片机程序为什么会死机或

    单片机程序为什么会死机或呢?有哪些原因
    发表于 11-09 06:01

    单片机程序原因是什么

    参考:单片机程序?作者:嵌入式ARM网址:https://mp.weixin.qq.com/s/a22zVdSfCqWjSmlBxK2
    发表于 12-13 07:17

    EP100单片机Flash擦写函数全速运行时系统怎么解决

    关于EP100单片机Flash擦写函数全速运行时,系统解决方法在做EP100的CCP时,调用Flash擦写函数,程序下载进去,Command命令窗口一直提示 ILLEGAL_BP
    发表于 01-26 06:14

    单片机程序的几种原因

    单片机现象是指程序计数器(PC)的值出乎咱们所需求的,产生了反常的偏移,脱离了本来设定好的程序要履行的方位,进入原定
    发表于 11-30 12:57