单片机问题排查技巧(异常复位,程序死机)



1、应对复位

单片机可能在运行过程中复位了,下面介绍几种类型,用来分析自己的单片机可能的复位类型,从而定位问题根源:

序号分类原因
1看门狗软件死机,无法喂狗,导致复位。
可能没有打印错误码,跟 硬复位 效果相同
2内存泄露内存泄露导致复位(有些单片机会打印 error码,比如bk3432:0xf2f2f2f2)
3指针使用出错-
4数组越界-
5硬复位上电复位 / 欠压复位 / RST引脚复位,寄存器会重置
6软件复位软件主动复位,可能是OTA完成等情况。(寄存器不会重置)

2、应对 程序死机/跑飞/死循环
序号分类原因
1外设未初始化硬件IIC、串口,在上电/休眠唤醒后,未执行初始化,但是又去 发送/读取 等操作,导致死机。

1、增加 软件看门狗 ,当程序死机无法喂狗,看门狗会让单片机复位。
2、如果程序死机时,软件看门狗也失效,那么就需要 增加 硬件看门狗芯片

3、关键代码保护

程序中通过硬件SPI或者IIC跟外设通信,如果确认时序没有问题(正常情况可以读取数据或者发送数据),但是有时候在通信过程中,被其他中断抢占,造成SPI 时序延迟 导致出错。

解决方法:1、在SPI 通信开始前,关闭总中断;2、在SPI通信结束之后,再 打开总中断
从而保护 关键代码运行不被干扰。类似于 通过 进入临界区 / 退出临界区(enter_critical() / exit_critical())的方式保护关键代码不受干扰。


4、蓝牙连接广播 造成异常

蓝牙连接广播较小(<200ms),造成偶现 屏幕显示异常、I2C通信异常等情况,可以把连接广播间隔设置成1.5s~2s。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值