[经验分享] 单片机程序又跑飞?

[复制链接]
11419|123
 楼主| mikewalpole 发表于 2024-11-10 22:36 | 显示全部楼层
程序中使用了看门狗,但是没有及时“喂狗”,从而导致看门狗复位,使程序直接跳到复位位置。
fengm 发表于 2024-11-10 22:57 | 显示全部楼层
记录程序跑飞时的现象,分析跑飞的模式或触发条件。
macpherson 发表于 2024-11-11 09:48 | 显示全部楼层
程序运行过程中总是跑飞。              
mmbs 发表于 2024-11-11 10:08 | 显示全部楼层
比如使用 while(x) 等待电平变化,正常情况下 x 都会变成0,但万一没有,就会导致死机。最好加上时间限制。
earlmax 发表于 2024-11-11 10:28 | 显示全部楼层
复位电路中的电阻、电容等元件损坏,可能导致复位信号异常,无法正常复位单片机。
elsaflower 发表于 2024-11-11 11:36 | 显示全部楼层
使用内存监控工具检查内存使用情况,防止溢出。
deliahouse887 发表于 2024-11-11 12:06 | 显示全部楼层
定期进行代码审查,确保没有潜在的逻辑错误或漏洞。
mollylawrence 发表于 2024-11-11 12:26 | 显示全部楼层
电源不稳定、晶振失振、外部干扰等硬件问题。
modesty3jonah 发表于 2024-11-11 13:00 | 显示全部楼层
问数组时,确保索引值不会超出数组边界。
adolphcocker 发表于 2024-11-11 13:23 | 显示全部楼层
观察内存中关键变量的变化,检查是否有意外的修改。
lzmm 发表于 2024-11-11 14:30 | 显示全部楼层
所有指针操作都在合法的内存范围内。
wilhelmina2 发表于 2024-11-11 15:27 | 显示全部楼层
常见错误为指针操作错误。特别是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机。
ingramward 发表于 2024-11-11 16:03 | 显示全部楼层
使用去耦电容,减少电源线上的噪声。
1988020566 发表于 2024-11-12 15:26 | 显示全部楼层
对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。
eefas 发表于 2024-11-13 10:27 | 显示全部楼层
检查程序中是否存在打开了某个中断,但是没有相对应的中断服务程序,确保每个开启的中断都有相应的服务程序。
ulystronglll 发表于 2024-11-13 12:26 | 显示全部楼层
合理设置堆栈大小,避免过度使用递归调用和动态内存分配。
uiint 发表于 2024-11-13 14:08 | 显示全部楼层
函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数,导致赋值语句中不知道把数据放到什么地方,从而引发程序跑飞。
hilahope 发表于 2024-11-13 15:07 | 显示全部楼层
指针未初始化或者野指针导致正常数据被篡改;如果程序区被修改,会导致程序直接跑飞;如果数据区被修改,会导致数据异常引起程序运行错误。
ingramward 发表于 2024-11-13 16:16 | 显示全部楼层
检查单片机及其外围电路是否受到外部电磁场的干扰,必要时增加屏蔽或滤波措施
gygp 发表于 2024-11-13 19:08 | 显示全部楼层
电源稳定、晶振电路设计合理、减少外部干扰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部