打印
[技术问答]

单片机程序又跑飞?

[复制链接]
楼主: uptown
手机看帖
扫描二维码
随时随地手机跟帖
21
lihuami| | 2025-1-17 13:15 | 只看该作者 回帖奖励 |倒序浏览
小心处理指针,避免野指针和解引用未初始化的指针。

使用特权

评论回复
22
youtome| | 2025-1-17 14:26 | 只看该作者
如果函数内部定义了大量的局部变量,或者函数存在递归调用且递归深度过大,可能会导致堆栈空间不足,从而引起堆栈溢出。当堆栈溢出时,程序的栈帧会被破坏,返回地址等重要信息丢失,程序就会跑飞。

使用特权

评论回复
23
probedog| | 2025-1-17 14:42 | 只看该作者
程序中的逻辑判断出现错误,导致程序流程异常。

使用特权

评论回复
24
classroom| | 2025-1-17 14:42 | 只看该作者
程序中存在无条件的死循环

使用特权

评论回复
25
laocuo1142| | 2025-1-17 15:26 | 只看该作者
在访问数组时,下标超出了数组的实际范围,导致程序访问了非法的内存地址。

使用特权

评论回复
26
wilhelmina2| | 2025-1-17 15:50 | 只看该作者
当函数调用层次过深或者局部变量过大时,可能会导致堆栈溢出,从而使程序失控。

使用特权

评论回复
27
1988020566| | 2025-1-17 18:51 | 只看该作者
代码中的指针或数组越界。
程序中的逻辑错误或算法缺陷。
中断服务程序(ISR)使用不当。
外部中断或异常处理不当。

使用特权

评论回复
28
flycamelaaa| | 2025-1-17 20:26 | 只看该作者
中断处理不当

使用特权

评论回复
29
powerantone| | 2025-1-17 21:26 | 只看该作者
电源电压波动或不稳定,影响单片机的正常工作。

使用特权

评论回复
30
cemaj| | 2025-1-17 22:15 | 只看该作者
如果看门狗定时器没有正确配置或者没有及时喂狗,可能会导致系统复位。

使用特权

评论回复
31
saservice| | 2025-1-17 22:50 | 只看该作者
编译器或链接器设置错误。
代码优化级别导致的问题。

使用特权

评论回复
32
朝生| | 2025-1-18 17:17 | 只看该作者
动态内存分配没有释放,导致内存耗尽。它也可能导致崩溃

使用特权

评论回复
33
adolphcocker| | 2025-1-18 21:38 | 只看该作者
检查单片机和其他硬件组件是否正常工作。
使用电磁屏蔽或滤波器减少外部干扰。

使用特权

评论回复
34
backlugin| | 2025-1-18 22:07 | 只看该作者
尽量缩短中断处理程序的执行时间,及时清除中断标志,避免中断嵌套过深。

使用特权

评论回复
35
maqianqu| | 2025-1-18 22:29 | 只看该作者
避免过深的函数调用层次和过大的局部变量,必要时可以使用动态内存分配。

使用特权

评论回复
36
V853| | 2025-1-19 10:30 | 只看该作者
MCU程序跑偏的原因可能涉及软件、硬件或环境因素。您可以使用以下方法排除故障并解决问题

使用特权

评论回复
37
芯路例程| | 2025-1-19 19:02 | 只看该作者
当一个MCU程序在一个函数中运行时,它总是运行到该函数的末尾。当它想逃离函数时,程序就逃跑了。

使用特权

评论回复
38
Stahan| | 2025-1-19 22:39 | 只看该作者
为什么操作错误地址就会跑飞啊?

使用特权

评论回复
39
zerorobert| | 2025-1-20 10:39 | 只看该作者
程序中存在死循环是导致程序跑飞的常见原因之一。例如,在循环条件的判断上出现错误,或者在循环内部没有正确的退出机制,导致程序一直执行循环体而无法跳出。

使用特权

评论回复
40
modesty3jonah| | 2025-1-20 11:09 | 只看该作者
中断处理程序(ISR)中执行时间过长或者没有及时清除中断标志,可能会导致中断嵌套过深或者死锁。

使用特权

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

本版积分规则