打印
[经验分享]

单片机程序又跑飞?

[复制链接]
楼主: mikewalpole
手机看帖
扫描二维码
随时随地手机跟帖
41
mikewalpole|  楼主 | 2024-11-10 22:36 | 只看该作者 回帖奖励 |倒序浏览
程序中使用了看门狗,但是没有及时“喂狗”,从而导致看门狗复位,使程序直接跳到复位位置。

使用特权

评论回复
42
fengm| | 2024-11-10 22:57 | 只看该作者
记录程序跑飞时的现象,分析跑飞的模式或触发条件。

使用特权

评论回复
43
macpherson| | 2024-11-11 09:48 | 只看该作者
程序运行过程中总是跑飞。              

使用特权

评论回复
44
mmbs| | 2024-11-11 10:08 | 只看该作者
比如使用 while(x) 等待电平变化,正常情况下 x 都会变成0,但万一没有,就会导致死机。最好加上时间限制。

使用特权

评论回复
45
earlmax| | 2024-11-11 10:28 | 只看该作者
复位电路中的电阻、电容等元件损坏,可能导致复位信号异常,无法正常复位单片机。

使用特权

评论回复
46
elsaflower| | 2024-11-11 11:36 | 只看该作者
使用内存监控工具检查内存使用情况,防止溢出。

使用特权

评论回复
47
deliahouse887| | 2024-11-11 12:06 | 只看该作者
定期进行代码审查,确保没有潜在的逻辑错误或漏洞。

使用特权

评论回复
48
mollylawrence| | 2024-11-11 12:26 | 只看该作者
电源不稳定、晶振失振、外部干扰等硬件问题。

使用特权

评论回复
49
modesty3jonah| | 2024-11-11 13:00 | 只看该作者
问数组时,确保索引值不会超出数组边界。

使用特权

评论回复
50
adolphcocker| | 2024-11-11 13:23 | 只看该作者
观察内存中关键变量的变化,检查是否有意外的修改。

使用特权

评论回复
51
lzmm| | 2024-11-11 14:30 | 只看该作者
所有指针操作都在合法的内存范围内。

使用特权

评论回复
52
wilhelmina2| | 2024-11-11 15:27 | 只看该作者
常见错误为指针操作错误。特别是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机。

使用特权

评论回复
53
ingramward| | 2024-11-11 16:03 | 只看该作者
使用去耦电容,减少电源线上的噪声。

使用特权

评论回复
54
AuroraS| | 2024-11-11 21:11 | 只看该作者
MCU的电源是稳定的,并且使用了适当的电源管理策略,例如稳压器和滤波电容。

使用特权

评论回复
55
1988020566| | 2024-11-12 15:26 | 只看该作者
对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。

使用特权

评论回复
56
eefas| | 2024-11-13 10:27 | 只看该作者
检查程序中是否存在打开了某个中断,但是没有相对应的中断服务程序,确保每个开启的中断都有相应的服务程序。

使用特权

评论回复
57
ulystronglll| | 2024-11-13 12:26 | 只看该作者
合理设置堆栈大小,避免过度使用递归调用和动态内存分配。

使用特权

评论回复
58
uiint| | 2024-11-13 14:08 | 只看该作者
函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数,导致赋值语句中不知道把数据放到什么地方,从而引发程序跑飞。

使用特权

评论回复
59
hilahope| | 2024-11-13 15:07 | 只看该作者
指针未初始化或者野指针导致正常数据被篡改;如果程序区被修改,会导致程序直接跑飞;如果数据区被修改,会导致数据异常引起程序运行错误。

使用特权

评论回复
60
ingramward| | 2024-11-13 16:16 | 只看该作者
检查单片机及其外围电路是否受到外部电磁场的干扰,必要时增加屏蔽或滤波措施

使用特权

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

本版积分规则