在日常的单片机开发中,不可避免会遇上死机的现象,让人摸不着头脑,更严重的是死机并不能轻易复现的情况,下面我就说一些我在开发过程中遇到过的情况。

  1. 变量溢出或变量未初始化
    这里的变量溢出指的是变量定义的数据类型,变量溢出肯定会造成程序在运行过程中出现异常,但经我验证,并不一定会造成死机。作为一名合格的C程序员,我们应该把数据定义合适,不会超出,也不会浪费内存空间。

  2. 程序逻辑
    有时候看上去的死机情况,是程序的逻辑有问题,造成了工作起来像死机一样,这时可以分析出现死机的环境因素,异常的功能表现,条件允许还可以做运行途中的数据采集,结合各种因素分析程序的问题,有时代码看起来执行过程没问题,实际上某个步骤并没想象中那么简单,要保证正常运行必须进行特殊处理。

  3. 数组溢出
    在定义数组变量时,我们都有初始化一个数组长度变量,这个长度必须符合程序运行需要,若定义少了,溢出部分的功能肯定出现问题,稍有过之,就会造成死机。还有,定义长度合适,但在数组存放数据时,没有对数据长度进行必要的判断,造成数组溢出,是一定会死机的。

  4. 指针错误
    这个我平时并未遇到过,但从理论分析,指针错误是会造成死机的。

  5. 中断
    中断造成死机的因素还是蛮多的,这个也跟不同单片机的内部中断设置有关。第一种,打开了实际上没有使用的中断。当没用到的中断被误触发后,就会造成异常。第二种,没有真正地消除中断标志位。在中断服务函数中一定要保证所有相关的中断标志位被清除。第三种,中断使能位没有处理好。
    其中,我遇到过第二种情况,那个单片机的通信接收错误会对应产生接收错误中断标志位,与通信接收中断共用一个中断服务函数,而我把接收错误标志的清除放在了主循环的几个位置上。这个处理造成了接收错误中断标志位其实并没有得到绝对的清除,引起该中断标志一直触发中断,这时程序就以超低速运行,这是一种“假死”的情况。

  6. 死循环
    程序一直待在while(x);里面出不来,正常情况下,x是会变成0的,但一直为1就会出不来。在实际开发中,一般的处理是寄存器外设相关的像内部时钟起振,AD采样这种还是保留while(外设进行中,未完成);的写法,因为实在不行还有看门狗,但在逻辑处理时,往往采用do……while(x);结构,在一段时间后break;出去循环体。

  7. 看门狗
    开发过程中,我们都会打开看门狗,每个MCU的内部看门狗框图并不一样,需按照对应的框图结构进行配置,像有些单片机有窗口看门狗,有些单片机使用硬件看门狗。可能也会有取消看门狗功能的,就要注意是否关闭了所有看门狗。

  8. 低压
    我们知道电子设备在电压不足的情况下会出现异常,所以现在MCU都有低压复位功能。可是,一般产品不是5V,3.3V直接供电的,像通过7805稳压供电的,是不会出现的单片机供电电压不足的情况的。

  9. 堆栈不够
    在程序中尽量避免多级的调用,不然单片可能没有足够的堆栈区。

  10. 中断变量处理不妥
    对于在中断中修改的全局变量,使用volatile关键字。在读取中断变量时,先关闭全局中断,读完之后再打开全局中断。

单片机死机常见原因分析相关推荐

  1. 计算机死机的解决方法及操作步骤,花屏死机怎么办?电脑花屏死机常见原因以及解决方法...

    电脑使用时间久了,难免会出现各种问题,相比电脑蓝屏,电脑花屏死机的情况也不少见.而很多人在面对电脑死机花屏的时候,都不知道如何进行检查排除,解决花屏问题.其实,电脑花屏的常见原因还是比较多的,而不同的 ...

  2. 如果计算机黑屏请分析原因是什么原因,电脑系统黑屏死机故障原因分析处理

    电脑黑屏的问题经常发生,其中的原因涉及到很多方面,网罗计算机里面所有的软件与硬件,系统死机故障多半表现为黑屏,这类故障与显示器.显示卡关系很密切,同时系统主板.CPU.CACHE.内存条,电源等部件的 ...

  3. 分析如何查找Linux死机的原因

    分析如何查找Linux死机的原因 Linux 内核虽然号称"不死族",几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的.因为 Linux 广泛用于生产环境,所以每一次宕 ...

  4. android 常见死机问题-如何分析

    android 常见死机问题--log分析 ============================================================================== ...

  5. android 常见死机问题--log分析

    android 常见死机问题--log分析 ============================================================================== ...

  6. 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...

    当前位置:我的异常网» C语言 » 下头函数,只要被调用就会导致单片机死机,请大家帮 下头函数,只要被调用就会导致单片机死机,请大家帮忙分析 www.myexceptions.net  网友分享于:2 ...

  7. 计算机桌面死机的原因是,电脑老是死机的原因有哪些 7种常见的解决方法

    随着科技的不断发展,电脑已经成为我们生活工作中的好帮手.大家在使用电脑的时候,不少人会碰到电脑死机的情况,那么电脑老是死机的原因有哪些呢?又有哪些解决方法?接下来小编就简单的给大家介绍一下电脑老是死机 ...

  8. 单片机 架构 程序 经验总结_单片机“死机”了怎么办?看看一个资深工程师的经验总结...

    原标题:单片机"死机"了怎么办?看看一个资深工程师的经验总结 单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在 ...

  9. 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...

    ‍‍ 电脑出现死机是很常见的一种故障,造成的原因也有很多种.而最近有些用户的电脑经常死机,开机几分钟就死机,有时还会出现蓝屏,这到底是怎么回事呢?电脑经常死机是什么原因呢?下面小编结合自己的实际情况来 ...

最新文章

  1. ue4 classuobject没有成员beginplay_关于UE4使用的一些想法(一)
  2. oop中构造函数编写的注意事项
  3. 黄页前台联动菜单修改时不能显示,要重新选择|没样式
  4. 前窗玻璃膜贴了一周还有气泡_关于车窗玻璃的养护你了解多少?
  5. 如何优雅的使用 phpStorm
  6. 【常见Web应用安全问题】---1、Cross Site Scripting
  7. chrome扩展程序获取当前页面URL和HTML内容
  8. vue 表格中有列需要异步加载_Vue中使用async/await解决异步请求问题
  9. 海南计算机考研和培训哪个比较好,海南考研集训营前十排名
  10. 从小白到大数据人工智能专家的学习历程-送100G学习资料
  11. python管道_python中管道
  12. Linux 如何配置 SFTP 来代替单一ftp应用
  13. 失眠就吃安眠药真的好吗?好心情送你沾枕到天亮的诀窍
  14. 12306火车票查询--python
  15. 961 计算机学科专业基础综合,2018年北京航空航天大学961计算机学科专业基础综合考研复习资料...
  16. IT业9大最糟糕CEO决策(转载)
  17. 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5
  18. 【国产数据库】GBase学习⑤ - gsql 客户端连接工具
  19. 基于 IjkPlayer 的视频播放器
  20. zzulioj1873: This offer 深搜

热门文章

  1. Android 10 适配攻略
  2. [xenomai驱动] 字符设备测试
  3. 最齐全的英文字体素材,速来收藏
  4. php随机生成手机短信验证码
  5. Neusoft——智能网联嵌入式开发技术
  6. 为什么抖音点赞服务器维护,抖音不能点赞是怎么回事
  7. V-Ray太阳光使用教程分享
  8. 阿里园区竟然开了一家微笑就可以打折的店
  9. 生气了 说说腾讯游戏
  10. 医学图像分割综述:U-Net系列