跑飞指的是程序指针混乱,堆栈被破坏,跑飞算是程序运行问题中较严重的一类,对指针未初始化或未指向值就解引用常会引起跑飞 如: struct AA { int i; char j; } p; 如未p = (AA )malloc(sizeof(struct AA))等之类进行初始化就 使用p->i,j等
1、你好我想问你知道跑飞的意思吗,程序跑飞一般是指PC指针不按照你的程序思路去指向了,比如你退出中断的时候应该回到之前的那个压栈PC处却没有,这样的现象我们认为程序跑飞。
2、对于程序跑飞一般我们采用看门狗的方式来让程序复位,防止程序跑飞造成严重后果。
3、看不到现象不一定是跑飞,不过STC这类片子没有仿真器支持的吧一般,如果是AVR或者PIC或者430用仿真器看看PC就知道了。
4、可以将某个口的输出特征电平,用于检测程序是否跑飞,运行后检测该口的电平是否有差异即可。
5、程序跑飞了是可以在写入的,除非是芯片损坏了,是不是电源或者复位电平等导致芯片挂了,所以你认为是程序跑了一遍就挂掉了。
6、打好基础,搞清楚细节问题,对你很有帮助,比如看门狗如何使用等这类问题,编程谁都会的,外面一大把都是。什么高中毕业,大专生,就连现在本科生都去抢单片机的饭碗,搞不懂。
7、系统的学习,不要只看到片面的东西,学会自己的一套分析问题的方式。
8、打字很累,有时间hi我
你说的是类似于尖峰电压干扰,此时电压会发生变化,但又不足以让单片机复位,但会引起单片机的部分寄存器值的变化,单片机寄存器就如电脑的内存一样,其值发生变化,程序状态就会发生变化,从而引起程序跑飞。
对于简单的错误,如果能初步猜测到执行哪个函数后跑飞的,那就可以直接单步调试,看看什么原因,不外乎指针非法 *** 作,数组越界之类的。
还有一种笨方法,注释函数,如果注释函数后bug不再现,那么就可以按照刚刚说的单步进去这个函数,看看有什么问题。
更有效的但是也对水平要求更高的方法可以看一下别人的方法。
下面是几个链接,可以看看,学习一下。
记一次STM32中HardFault问题的调试解决
如何找到导致程序出现HardFault
STM32硬件错误HardFault_Handler的处理方
定位产生HARD FAULT之前的代码
原因很多啊
1)程序没有结尾或不是循环的程序。
2)nmi管脚没有上拉。
3)在看门狗动作的时候程序会经常跑飞。
4)程序编制不当也会引起程序跑飞。
5)硬件系统有问题。
以上就是关于DSP程序跑飞的原因有哪些全部的内容,包括:DSP程序跑飞的原因有哪些、怎么我的单片机程序老跑飞(STC的)而且跑飞后再写也写不进去。、Q3:单片机在断电后又及时上电,为什么程序会跑飞等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)