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

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

3天内不再提示

你的单片机程序为什么会跑飞了?单片机程序死机跑飞的六大原因

5RJg_mcuworld 来源:未知 作者:易水寒 2018-09-24 14:41 次阅读

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

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

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

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

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

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

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

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

    关注

    6036

    文章

    44556

    浏览量

    634991
  • 看门狗
    +关注

    关注

    10

    文章

    561

    浏览量

    70799
  • 程序
    +关注

    关注

    117

    文章

    3786

    浏览量

    81023

原文标题:你的单片机程序跑飞了,原因在这!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机程序?小技巧帮你忙

    经常接触单片机的朋友,肯定遇到过单片机程序的问题。由于程序较为复杂,所以一旦出现
    发表于 04-02 09:58 8610次阅读

    什么原因导致单片机程序

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

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

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

    单片机程序死机原因

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

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

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

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

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

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

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

    单片机程序原因是什么

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

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

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

    单片机程序为什么死机资料下载

    电子发烧友网为提供单片机程序为什么死机资料下
    发表于 04-23 08:50 11次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b>为什么<b class='flag-5'>会</b><b class='flag-5'>死机</b><b class='flag-5'>跑</b><b class='flag-5'>飞</b>资料下载

    单片机程序总是怎么办

    单片机中有看门狗,长时间不喂狗,程序就会复位。为什么长时间不喂狗呢?这是因为程序飞了,抛开外部因素不谈。今天就和大家分享一下,
    的头像 发表于 09-26 10:45 6561次阅读

    单片机意外死机,意外复位,程序

    单片机意外死机,意外复位,程序原因有以下几种。一、数组越界。       特别是使用指针操
    发表于 11-24 18:06 14次下载
    <b class='flag-5'>单片机</b>意外<b class='flag-5'>死机</b>,意外复位,<b class='flag-5'>程序</b><b class='flag-5'>跑</b><b class='flag-5'>飞</b>

    单片机程序的三种现象、原因及解决方法

    在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是
    发表于 02-08 15:47 8次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b><b class='flag-5'>跑</b><b class='flag-5'>飞</b>的三种现象、<b class='flag-5'>原因</b>及解决方法

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

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

    分享一下用ST-LINK Utility识别单片机程序是否

    最近有网友大概问了这样的问题:单片机项目偶尔经常出现异常,不知道是程序飞了,还是进入某个死循环了。
    的头像 发表于 01-09 11:40 3424次阅读
    分享一下用ST-LINK Utility识别<b class='flag-5'>单片机</b><b class='flag-5'>程序</b>是否<b class='flag-5'>跑</b><b class='flag-5'>飞</b>