
如果是C51的话:只要不是乱用指针,数组越界或者乱碰SP的话是不会跑飞的,多半是程序错误导致实际结果和你预想的结果有点出入。
如果是汇编的话,除了上述几点外还有可能是压栈保护或释放是有问题,或者没经过RETI正常返回。
最好还是贴代码解决。
在硬件中断函数HardFault_Handler是
如果上电后, 在调试时, 执行单步, 会在不确定位置的地方产生HardFault_Handle, 检查一下时钟配置(外部晶振频率, SysTemInit/PLLConfig相关函数以及晶振频率宏定义)。
STM32出现硬件错误可能有以下原因:
(1)数组越界 *** 作;
(2)内存溢出,访问越界;
(3)堆栈溢出,程序跑飞;
(4)中断处理错误;
和其他高级语言一样,C语言的函数返回地址和参数是栈中传递的,只要栈未被意外覆盖,函数结束后总会回到调用函数的。
如果有中断程序,被中断的断点会被中断程序保护起来,中断代码执行结束后,它会恢复现场,因此正常情况下,程序不会“跑飞”的。
以上就是关于51单片机中断返回跑飞了,怎么回事全部的内容,包括:51单片机中断返回跑飞了,怎么回事、STM32F103程序运行正常,但在debug时进入HardFault_Handler是什么原因、c语言--中断程序会在什么情况下不能回到原处等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)