ulystronglll 发表于 2024-12-30 02:25

单片机问题排查

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。

突然下起雨 发表于 2025-5-25 19:03

硬件I2C、串口等外设,唤醒后未重新初始化,直接操作导致死机。

zhouyong77 发表于 2025-5-26 07:58

蓝牙这一点貌似和单片机异常关系不大

daichaodai 发表于 2025-5-26 08:11

单片机问题排查需要结合软硬件协同分析

tpgf 发表于 2025-5-27 09:02

这个格式有点问题 ,另外这个问题的大类很多说的有点笼统了 可以详细分析一下吗
页: [1]
查看完整版本: 单片机问题排查