51单片机中断返回跑飞了,怎么回事

51单片机中断返回跑飞了,怎么回事,第1张

如果是C51的话:只要不是乱用指针,数组越界或者乱碰SP的话是不会跑飞的,多半是程序错误导致实际结果和你预想的结果有点出入。

如果是汇编的话,除了上述几点外还有可能是压栈保护或释放是有问题,或者没经过RETI正常返回。

最好还是贴代码解决。

在硬件中断函数HardFault_Handler是

如果上电后, 在调试时, 执行单步, 会在不确定位置的地方产生HardFault_Handle, 检查一下时钟配置(外部晶振频率, SysTemInit/PLLConfig相关函数以及晶振频率宏定义)。

STM32出现硬件错误可能有以下原因:

(1)数组越界 *** 作;

(2)内存溢出,访问越界;

(3)堆栈溢出,程序跑飞;

(4)中断处理错误;

和其他高级语言一样,C语言的函数返回地址和参数是栈中传递的,只要栈未被意外覆盖,函数结束后总会回到调用函数的。

如果有中断程序,被中断的断点会被中断程序保护起来,中断代码执行结束后,它会恢复现场,因此正常情况下,程序不会“跑飞”的。

以上就是关于51单片机中断返回跑飞了,怎么回事全部的内容,包括:51单片机中断返回跑飞了,怎么回事、STM32F103程序运行正常,但在debug时进入HardFault_Handler是什么原因、c语言--中断程序会在什么情况下不能回到原处等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9805865.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存