打印
[其它应用]

如何判断单片机程序是否跑飞了?

[复制链接]
1071|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
瞌睡虫本虫|  楼主 | 2025-3-10 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序跑飞是指程序执行异常,导致系统失控。

使用特权

评论回复
沙发
tpgf| | 2025-4-8 10:11 | 只看该作者
如果启用了看门狗(WDT)且系统定期喂狗,看门狗复位是程序跑飞的直接证据

使用特权

评论回复
板凳
夜幕叙事曲| | 2025-4-8 10:25 | 只看该作者
除了看门狗,还是看门狗。
因为程序并不知道自己跑飞了

使用特权

评论回复
地板
guanjiaer| | 2025-4-8 12:39 | 只看该作者
对重要全局变量设置范围检查

使用CRC或校验和验证关键数据结构的完整性

使用特权

评论回复
5
probedog| | 2025-4-8 13:47 | 只看该作者
程序跑飞导致无法喂狗,看门狗会触发复位。

使用特权

评论回复
6
laocuo1142| | 2025-4-8 13:48 | 只看该作者
通过复位标志位检查是否由看门狗复位。

使用特权

评论回复
7
flycamelaaa| | 2025-4-8 13:48 | 只看该作者
堆栈溢出可能导致程序跑飞。

使用特权

评论回复
8
powerantone| | 2025-4-8 15:00 | 只看该作者
在堆栈末尾设置“哨兵”值,定期检查是否被覆盖。

使用特权

评论回复
9
classroom| | 2025-4-8 17:20 | 只看该作者
避免高优先级中断长时间占用CPU,导致低优先级中断无法执行。

使用特权

评论回复
10
stormwind123| | 2025-4-8 18:00 | 只看该作者
跑飞可能导致外设配置错误。例如,串口可能持续发送垃圾数据,GPIO可能输出异常电平。

使用特权

评论回复
11
磨砂| | 2025-4-8 18:03 | 只看该作者
异常的电平波动可能表明程序失控,使用示波器监测复位引脚电压

使用特权

评论回复
12
probedog| | 2025-4-8 19:00 | 只看该作者
读取复位源寄存器,判断是否由跑飞触发。

使用特权

评论回复
13
晓伍| | 2025-4-8 19:57 | 只看该作者
可选微跟踪缓冲(MTB)用于低成本调试

使用特权

评论回复
14
八层楼| | 2025-4-8 21:50 | 只看该作者
定期翻转的GPIO引脚停止变化,通信接口(UART、SPI等)停止收发数据

使用特权

评论回复
15
观海| | 2025-4-9 17:51 | 只看该作者
通过软件进行检测:
// 在主循环中设置心跳标志
volatile uint32_t heartbeat = 0;

while(1) {
    heartbeat++;
    // ...正常程序逻辑...
    if(heartbeat > MAX_COUNT) {
        // 超时处理
    }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

53

帖子

0

粉丝