打印
[方案相关]

三种跑飞现象分析

[复制链接]
楼主: kkzz
手机看帖
扫描二维码
随时随地手机跟帖
21
bartonalfred| | 2025-3-11 19:20 | 只看该作者 回帖奖励 |倒序浏览
  数组访问时检查索引范围。              

使用特权

评论回复
22
alvpeg| | 2025-3-11 22:22 | 只看该作者
在关键代码部分增加看门狗“喂狗”操作,以防止因意外情况导致无法及时“喂狗”。此外,可以考虑使用双看门狗机制,即同时使用硬件看门狗和软件看门狗,以提高系统的可靠性。

使用特权

评论回复
23
gouguoccc| | 2025-3-12 08:14 | 只看该作者
也有可能是外部环境干扰影响导致的

使用特权

评论回复
24
macpherson| | 2025-3-12 15:10 | 只看该作者
程序中使用了看门狗,但没有及时“喂狗”(即清除看门狗的计时器),导致看门狗超时复位,使程序直接跳到复位位置。

使用特权

评论回复
25
beacherblack| | 2025-3-12 16:53 | 只看该作者
单片机程序在函数运行到末尾跳出时跑飞。

使用特权

评论回复
26
earlmax| | 2025-3-12 18:36 | 只看该作者
函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数。例如,在函数中定义了一个数组 ucDataBuff[10],这个数组只有10个元素,但是在函数中却有这样的语句 ucDataBuff[10] = 0x1a,这个语句是给数组的第11个元素赋值。由于定义的数组只有10个元素,从而导致赋值语句中不知道把 0x1a 放到什么地方,从而导致程序跑飞。

使用特权

评论回复
27
uytyu| | 2025-3-12 20:39 | 只看该作者
许多现代编译器可以检测潜在的数组越界问题,确保启用相关警告级别。

使用特权

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

使用特权

评论回复
29
wangdezhi| | 2025-3-14 11:10 | 只看该作者
在关键的耗时操作中,定期调用喂狗函数。

使用特权

评论回复
30
lzmm| | 2025-3-14 12:51 | 只看该作者
设置了某个中断使能但未提供相应的中断服务例程(ISR),当中断触发时,处理器找不到ISR入口点,导致程序失控。

使用特权

评论回复
31
phoenixwhite| | 2025-3-14 15:00 | 只看该作者
执行长时间任务时,程序跳转到复位位置。

使用特权

评论回复
32
jkl21| | 2025-3-14 16:42 | 只看该作者
程序中打开了某个中断,但却没有提供相应的中断服务程序。当中断发生时,系统找不到中断服务程序的入口,从而导致程序跑飞。

使用特权

评论回复
33
bartonalfred| | 2025-3-14 20:31 | 只看该作者
打开了某个中断,但没有对应的中断服务程序,中断发生后找不到入口。

使用特权

评论回复
34
zephyr9| | 2025-3-14 22:34 | 只看该作者
在开发带界面的软件时,得用GUI框架。

使用特权

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

使用特权

评论回复
36
wengh2016| | 2025-3-15 02:38 | 只看该作者
看门狗定时器(Watchdog Timer)在程序执行过程中没有被及时喂狗(即重置看门狗定时器),导致看门狗超时并触发系统复位。

使用特权

评论回复
37
kmzuaz| | 2025-3-15 05:42 | 只看该作者
采用模块化设计,减少复杂度,便于调试和维护。

使用特权

评论回复
38
sheflynn| | 2025-3-15 08:43 | 只看该作者
外部干扰信号或硬件异常可能会影响看门狗定时器的正常工作,导致误触发复位。例如,电磁干扰、电源波动等都可能对单片机的工作产生影响。

使用特权

评论回复
39
wwppd| | 2025-3-15 10:54 | 只看该作者
对于必须执行较长时间的任务,考虑优化算法减少执行时间,或者将任务分割成多个小部分,以便定期喂狗。

使用特权

评论回复
40
updownq| | 2025-3-15 12:41 | 只看该作者
如果程序中存在死循环或可能长时间不返回的情况,应在这些位置特别注意“喂狗”。

使用特权

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

本版积分规则