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

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

3天内不再提示

单片机程序死机跑飞的原因盘点

贸泽电子设计圈 来源:陈翠 2019-07-21 10:28 次阅读

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

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

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

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

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

6、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。

当你把以上几条都试过后仍不能解决问题,可以尝试将调用次数较少的函数直接放到调用位置,并且把占用RAM大的局部变量改成全局变量,也许问题就解决了。

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

    关注

    5990

    文章

    43904

    浏览量

    619580
  • 单片机程序
    +关注

    关注

    1

    文章

    11

    浏览量

    9521

原文标题:单片机程序死机跑飞,可能是因为这几个原因

文章出处:【微信号:Mouser-Community,微信公众号:贸泽电子设计圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何应对程死机

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

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

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

    单片机程序死机原因

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

    单片机死机

    时(即开关变压器)瞬间,MCU重启,重复几次后直接死机程序,一AD口没法读取模拟值。请问是电源电流冲击还是AD有问题?或者都有问题?怎么解决。
    发表于 03-22 20:52

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

    有时,在写ARM时会遇到经常死机的情况,莫名其妙,在这里我总结了一些单片机/ARM死机或者的一些常见的查找方法和我对此的一些拙见希望对大
    发表于 08-26 16:16

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

    有时,在写ARM时会遇到经常死机的情况,莫名其妙,在这里我总结了一些单片机/ARM死机或者的一些常见的查找方法和我对此的一些拙见希望对
    发表于 08-27 09:34

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

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

    单片机死机了怎么办?

    电源电压的地不稳定造成电源电压瞬间负电压导致单片机故障程序不发运行。我的理解:1、""是因为程序隐患或外部干扰引起的误动作,致使PC被写
    发表于 09-10 07:30

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

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

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

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

    如何解决单片机死机的问题

    口上引起单片机死锁,破坏了硬件逻辑功能,导致死机。四、复位收到干扰,引起反复复位,在反复复位当中有可能会导致死机。综上所述:设计电路时,应该注意:1.电源稳定2.IO保护3.振荡器PCB布线要注意4.复位电路设计和PCB布线5.
    发表于 11-24 08:03

    单片机意外死机和复位的原因

    单片机意外死机,意外复位,程序原因有以下几种。一、数组越界。 特别是使用指针操作的,如果有
    发表于 12-07 07:13

    单片机程序原因是什么

    中有看门狗,长时间不喂狗,程序就会复位。为什么长时间不喂狗呢?这是因为程序飞了,抛开外部因素不谈。今天就和大家分享一下,单片机程序
    发表于 12-13 07:17

    单片机程序的几种原因

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

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

    单片机程序死机,可能是这几个原因
    的头像 发表于 06-19 17:18 8007次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b><b class='flag-5'>死机</b>,可能是这几个<b class='flag-5'>原因</b>