单片机程序跑飞死机的几种原因

13 篇文章 1 订阅

在使用单片机过程中,经常会出现程序运行一段时间后,不能够正常相应的情况。一般分为软件原因和硬件原因,其中硬件原因比较容易查,软件原因就较为复杂。

软件导致单片机死机的原因

1、指针异常

指针未初始化或者野指针导致正常数据被篡改。如果程序区被修改,会导致程序直接跑飞;如果数据区被修改,会导致数据异常引起程序运行错误。

2、缓冲区溢出

实际接受的数据超过了缓冲区长度,导致后续正常数据被篡改。

或者操作数组的时候下标溢出

3、等待标志位

没有增加超时判断,正常情况下很快就能出来,但实际运行时标志位一直满足while条件,导致程序一直死循环等待标志位。处理方法是增加超时判断,超过一定时间主动报错退出。

4、堆栈溢出

常见于容量小的单片机,重复中断、函数调用导致超出堆栈空间,正常数据被改写。该问题最难查,有一定特殊性,很难稳定复现

5、中断异常

打开了某个中断但是没有编写中断响应函数导致进入fault,或者没有清除中断标志导致重复进入中断。

硬件导致单片机死机的原因

1、电源不稳定
主要表现为纹波过大、电压过高、过低
2、晶振失振
晶振电路设计有问题,导致温度变化后,晶振失振
3、外部干扰
外部干扰导致导线上电平变化,或者直接导致单片机内部模块运行异常。常见于一些干扰较为严重的场合,可通过电磁干扰性的实验复现。现象是在特定环境下容易出现,实验室条件下很难复现。

  • 10
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值