bartonalfred 发表于 2025-3-11 19:20

数组访问时检查索引范围。            

alvpeg 发表于 2025-3-11 22:22

在关键代码部分增加看门狗“喂狗”操作,以防止因意外情况导致无法及时“喂狗”。此外,可以考虑使用双看门狗机制,即同时使用硬件看门狗和软件看门狗,以提高系统的可靠性。

gouguoccc 发表于 2025-3-12 08:14

也有可能是外部环境干扰影响导致的

macpherson 发表于 2025-3-12 15:10

程序中使用了看门狗,但没有及时“喂狗”(即清除看门狗的计时器),导致看门狗超时复位,使程序直接跳到复位位置。

beacherblack 发表于 2025-3-12 16:53

单片机程序在函数运行到末尾跳出时跑飞。

earlmax 发表于 2025-3-12 18:36

函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数。例如,在函数中定义了一个数组 ucDataBuff,这个数组只有10个元素,但是在函数中却有这样的语句 ucDataBuff = 0x1a,这个语句是给数组的第11个元素赋值。由于定义的数组只有10个元素,从而导致赋值语句中不知道把 0x1a 放到什么地方,从而导致程序跑飞。

uytyu 发表于 2025-3-12 20:39

许多现代编译器可以检测潜在的数组越界问题,确保启用相关警告级别。

chenci2013 发表于 2025-3-12 22:21

看门狗定时器是一种硬件或软件机制,用于监测程序的运行状态。如果在规定的时间内没有对看门狗定时器进行“喂狗”操作(即重置定时器),定时器就会超时,从而触发系统复位。这可能是由于程序在某些耗时的操作中陷入了死循环或者长时间等待,导致无法及时“喂狗”。

wangdezhi 发表于 2025-3-14 11:10

在关键的耗时操作中,定期调用喂狗函数。

lzmm 发表于 2025-3-14 12:51

设置了某个中断使能但未提供相应的中断服务例程(ISR),当中断触发时,处理器找不到ISR入口点,导致程序失控。

phoenixwhite 发表于 2025-3-14 15:00

执行长时间任务时,程序跳转到复位位置。

jkl21 发表于 2025-3-14 16:42

程序中打开了某个中断,但却没有提供相应的中断服务程序。当中断发生时,系统找不到中断服务程序的入口,从而导致程序跑飞。

bartonalfred 发表于 2025-3-14 20:31

打开了某个中断,但没有对应的中断服务程序,中断发生后找不到入口。

zephyr9 发表于 2025-3-14 22:34

在开发带界面的软件时,得用GUI框架。

pmp 发表于 2025-3-14 23:35

检查程序中是否存在不必要的复杂计算和长时间等待操作,尽量简化程序结构,提高程序的执行效率。对于必须存在的耗时操作,可以将其拆分成多个小任务,分时执行,以确保有足够的时间进行“喂狗”操作。

wengh2016 发表于 2025-3-15 02:38

看门狗定时器(Watchdog Timer)在程序执行过程中没有被及时喂狗(即重置看门狗定时器),导致看门狗超时并触发系统复位。

kmzuaz 发表于 2025-3-15 05:42

采用模块化设计,减少复杂度,便于调试和维护。

sheflynn 发表于 2025-3-15 08:43

外部干扰信号或硬件异常可能会影响看门狗定时器的正常工作,导致误触发复位。例如,电磁干扰、电源波动等都可能对单片机的工作产生影响。

wwppd 发表于 2025-3-15 10:54

对于必须执行较长时间的任务,考虑优化算法减少执行时间,或者将任务分割成多个小部分,以便定期喂狗。

updownq 发表于 2025-3-15 12:41

如果程序中存在死循环或可能长时间不返回的情况,应在这些位置特别注意“喂狗”。
页: 1 [2] 3 4
查看完整版本: 三种跑飞现象分析