单片机死机常见原因分析
在日常的单片机开发中,不可避免会遇上死机的现象,让人摸不着头脑,更严重的是死机并不能轻易复现的情况,下面我就说一些我在开发过程中遇到过的情况。
变量溢出或变量未初始化
这里的变量溢出指的是变量定义的数据类型,变量溢出肯定会造成程序在运行过程中出现异常,但经我验证,并不一定会造成死机。作为一名合格的C程序员,我们应该把数据定义合适,不会超出,也不会浪费内存空间。程序逻辑
有时候看上去的死机情况,是程序的逻辑有问题,造成了工作起来像死机一样,这时可以分析出现死机的环境因素,异常的功能表现,条件允许还可以做运行途中的数据采集,结合各种因素分析程序的问题,有时代码看起来执行过程没问题,实际上某个步骤并没想象中那么简单,要保证正常运行必须进行特殊处理。数组溢出
在定义数组变量时,我们都有初始化一个数组长度变量,这个长度必须符合程序运行需要,若定义少了,溢出部分的功能肯定出现问题,稍有过之,就会造成死机。还有,定义长度合适,但在数组存放数据时,没有对数据长度进行必要的判断,造成数组溢出,是一定会死机的。指针错误
这个我平时并未遇到过,但从理论分析,指针错误是会造成死机的。中断
中断造成死机的因素还是蛮多的,这个也跟不同单片机的内部中断设置有关。第一种,打开了实际上没有使用的中断。当没用到的中断被误触发后,就会造成异常。第二种,没有真正地消除中断标志位。在中断服务函数中一定要保证所有相关的中断标志位被清除。第三种,中断使能位没有处理好。
其中,我遇到过第二种情况,那个单片机的通信接收错误会对应产生接收错误中断标志位,与通信接收中断共用一个中断服务函数,而我把接收错误标志的清除放在了主循环的几个位置上。这个处理造成了接收错误中断标志位其实并没有得到绝对的清除,引起该中断标志一直触发中断,这时程序就以超低速运行,这是一种“假死”的情况。死循环
程序一直待在while(x);里面出不来,正常情况下,x是会变成0的,但一直为1就会出不来。在实际开发中,一般的处理是寄存器外设相关的像内部时钟起振,AD采样这种还是保留while(外设进行中,未完成);的写法,因为实在不行还有看门狗,但在逻辑处理时,往往采用do……while(x);结构,在一段时间后break;出去循环体。看门狗
开发过程中,我们都会打开看门狗,每个MCU的内部看门狗框图并不一样,需按照对应的框图结构进行配置,像有些单片机有窗口看门狗,有些单片机使用硬件看门狗。可能也会有取消看门狗功能的,就要注意是否关闭了所有看门狗。低压
我们知道电子设备在电压不足的情况下会出现异常,所以现在MCU都有低压复位功能。可是,一般产品不是5V,3.3V直接供电的,像通过7805稳压供电的,是不会出现的单片机供电电压不足的情况的。堆栈不够
在程序中尽量避免多级的调用,不然单片可能没有足够的堆栈区。中断变量处理不妥
对于在中断中修改的全局变量,使用volatile关键字。在读取中断变量时,先关闭全局中断,读完之后再打开全局中断。
单片机死机常见原因分析相关推荐
- 计算机死机的解决方法及操作步骤,花屏死机怎么办?电脑花屏死机常见原因以及解决方法...
电脑使用时间久了,难免会出现各种问题,相比电脑蓝屏,电脑花屏死机的情况也不少见.而很多人在面对电脑死机花屏的时候,都不知道如何进行检查排除,解决花屏问题.其实,电脑花屏的常见原因还是比较多的,而不同的 ...
- 如果计算机黑屏请分析原因是什么原因,电脑系统黑屏死机故障原因分析处理
电脑黑屏的问题经常发生,其中的原因涉及到很多方面,网罗计算机里面所有的软件与硬件,系统死机故障多半表现为黑屏,这类故障与显示器.显示卡关系很密切,同时系统主板.CPU.CACHE.内存条,电源等部件的 ...
- 分析如何查找Linux死机的原因
分析如何查找Linux死机的原因 Linux 内核虽然号称"不死族",几乎不会崩溃或者死机,但是特殊情况下,还是有一定几率会宕机的.因为 Linux 广泛用于生产环境,所以每一次宕 ...
- android 常见死机问题-如何分析
android 常见死机问题--log分析 ============================================================================== ...
- android 常见死机问题--log分析
android 常见死机问题--log分析 ============================================================================== ...
- 单片机c语言调用函数费时,下头函数,只要被调用就会导致单片机死机,请大家帮忙分析...
当前位置:我的异常网» C语言 » 下头函数,只要被调用就会导致单片机死机,请大家帮 下头函数,只要被调用就会导致单片机死机,请大家帮忙分析 www.myexceptions.net 网友分享于:2 ...
- 计算机桌面死机的原因是,电脑老是死机的原因有哪些 7种常见的解决方法
随着科技的不断发展,电脑已经成为我们生活工作中的好帮手.大家在使用电脑的时候,不少人会碰到电脑死机的情况,那么电脑老是死机的原因有哪些呢?又有哪些解决方法?接下来小编就简单的给大家介绍一下电脑老是死机 ...
- 单片机 架构 程序 经验总结_单片机“死机”了怎么办?看看一个资深工程师的经验总结...
原标题:单片机"死机"了怎么办?看看一个资深工程师的经验总结 单片机(Microcontroller,MCU) 又称为微控制器或嵌入式控制器,体积虽小,但使用方便,应用范围广泛,在 ...
- 微型计算机频繁死机的原因,电脑经常死机是什么原因|电脑经常死机的解决方法...
电脑出现死机是很常见的一种故障,造成的原因也有很多种.而最近有些用户的电脑经常死机,开机几分钟就死机,有时还会出现蓝屏,这到底是怎么回事呢?电脑经常死机是什么原因呢?下面小编结合自己的实际情况来 ...
最新文章
- ue4 classuobject没有成员beginplay_关于UE4使用的一些想法(一)
- oop中构造函数编写的注意事项
- 黄页前台联动菜单修改时不能显示,要重新选择|没样式
- 前窗玻璃膜贴了一周还有气泡_关于车窗玻璃的养护你了解多少?
- 如何优雅的使用 phpStorm
- 【常见Web应用安全问题】---1、Cross Site Scripting
- chrome扩展程序获取当前页面URL和HTML内容
- vue 表格中有列需要异步加载_Vue中使用async/await解决异步请求问题
- 海南计算机考研和培训哪个比较好,海南考研集训营前十排名
- 从小白到大数据人工智能专家的学习历程-送100G学习资料
- python管道_python中管道
- Linux 如何配置 SFTP 来代替单一ftp应用
- 失眠就吃安眠药真的好吗?好心情送你沾枕到天亮的诀窍
- 12306火车票查询--python
- 961 计算机学科专业基础综合,2018年北京航空航天大学961计算机学科专业基础综合考研复习资料...
- IT业9大最糟糕CEO决策(转载)
- 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5
- 【国产数据库】GBase学习⑤ - gsql 客户端连接工具
- 基于 IjkPlayer 的视频播放器
- zzulioj1873: This offer 深搜