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

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

3天内不再提示

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

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

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

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

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

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

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

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

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

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

    关注

    10

    文章

    566

    浏览量

    70928
  • 单片机系统
    +关注

    关注

    1

    文章

    73

    浏览量

    103893
  • 死机
    +关注

    关注

    0

    文章

    17

    浏览量

    8621
  • 华秋DFM
    +关注

    关注

    20

    文章

    3494

    浏览量

    4717
收藏 人收藏

    评论

    相关推荐

    单片机怎么写入程序

    程序通常涉及以下几个步骤: 选择单片机和开发环境 : 确定项目需求,选择合适的单片机型号。 安装相应的开发环境,如Keil、IAR、MPLAB等。 硬件连接 : 将
    的头像 发表于 10-21 11:21 904次阅读

    单片机不工作的原因

    单片机不工作是一个复杂的问题,可能涉及多个方面的因素。以下是对单片机不工作原因的详细分析,旨在帮助技术人员或爱好者更好地理解和解决这一问题。
    的头像 发表于 10-17 18:11 1621次阅读

    单片机异常复位的原因

    单片机异常复位是指单片机在正常工作过程中,非预期地返回到初始状态或重启。这种异常复位现象可能由多种因素引起,以下是对单片机异常复位原因的详细
    的头像 发表于 10-17 17:56 1338次阅读

    什么原因会导致单片机系统死机

    ______________________________________ 什么原因会导致单片机系统死机
    发表于 10-16 22:32

    什么原因会导致单片机程序跑飞

    ______________________________________ 什么原因会导致单片机程序跑飞
    发表于 10-16 22:31

    十天学会单片机可能吗?单片机入门需要多久?

    学习单片机的过程,就像学习任何其他技能一样,不仅在于书本上的知识,更在于实践和应用的能力。许多人可能会问:十天能学会单片机吗?答案是:可以,但这取决于你所定义的“学会”到什么程度。首先,让我们明确
    的头像 发表于 09-05 08:00 1280次阅读
    十天学会<b class='flag-5'>单片机</b><b class='flag-5'>可能</b>吗?<b class='flag-5'>单片机</b>入门需要多久?

    keil可以读出单片机程序

    Keil是一款广泛应用于单片机程序开发的软件,它提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。然而,关于Keil是否能直接“读出”单片机程序
    的头像 发表于 09-02 10:32 1224次阅读

    单片机烧录程序用什么软件

    单片机烧录程序单片机开发过程中的一个重要环节,涉及到将编写好的程序代码通过烧录器写入单片机的ROM中,以实现对
    的头像 发表于 09-02 10:05 1617次阅读

    单片机烧录程序可以重新烧吗

    单片机(Microcontroller Unit, MCU)是一种集成电路芯片,它将计算机的CPU、存储器、输入/输出接口等集成在一块芯片上,用于控制各种电子设备。单片机烧录程序是指将编写
    的头像 发表于 09-02 10:04 1534次阅读

    单片机烧录程序时为什么一直在检测

    单片机烧录程序时,如果软件一直在显示“正在检测单片机”,可能是由多种原因导致的。以下是一些常见的原因
    的头像 发表于 09-02 09:57 5482次阅读

    单片机烧录程序的线比单片机上的少还能烧录吗

    单片机烧录原理 单片机烧录是指将编写好的程序代码通过一定的方式传输到单片机的存储器中,使其能够按照程序的指令运行。这个过程通常需要使用烧录器
    的头像 发表于 09-02 09:54 604次阅读

    单片机烧录程序的基本步骤是什么

    单片机烧录程序的基础,它包含了单片机芯片、电源、接口等基本元件。在选择单片机开发板时,需要考虑以下几个方面: (1)
    的头像 发表于 09-02 09:47 1399次阅读

    单片机为什么被认为是一门简单的技术?

    单片机(Microcontroller Unit, MCU)技术被广泛认为“简单”可能源于几个方面的误解或相对性考虑,但实际上,单片机技术的复杂性和应用广度远超过“简单”一词所能涵盖的
    的头像 发表于 08-21 09:15 361次阅读
    <b class='flag-5'>单片机</b>为什么被认为是一门简单的技术?

    STM8单片机手一摸单片机死机是怎么回事?

    如题,STM8单片机 用手指一摸单片机死机了,有时还没接触到就死机了,关键我用的都是汽车级的STM8A系列单片机了怎么抗干扰性怎么还这么差
    发表于 05-07 06:38

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

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