① 单片机为什么防止程序飞跑
一般是用在环境恶劣电磁干扰下启动看门狗防止程序跑飞,这样才能让单片机按照我们的意愿工作。
② 单片机程序飞掉的原因
1.外围干扰(EMI等)
2.电压波动(电源电压不稳定)
3.如果有内部看门狗,要正确设置或是不用.
4.产生中断一定要有正确的返回指令,否则程序也不知道会飞到哪里去.
5.温湿度也有可能引起这种情况.
③ 51单片机程序代码太多时程序为什么有时会跑飞
首先要确定是否为程序本身BUG,可用IDE环境仿真,去掉环境变数
确定程序合理后再排查硬件干扰,并加入软或硬狗
每步都妥善解决就不会有问题了
④ 看门狗是如何防止单片机程序跑飞的
从本质上而言看门狗就是一定时器,定时器一启动就一直运行除非硬件复位或软件关闭,定时到一定时间自动的益出使系统复位,如65536US益出,则对单片机复位,系统重新运行,所以我们编程时一定要小于65MS时重置定时器的初值(喂狗),喂狗也不能太频繁,这样降低了CPU的工作效率,一般时间留20-30%的余量。看门狗也没办法使程序不跑飞,只是程序跑飞后能重新启动不至于死机而已。
⑤ 51单片机程序跑飞什么意思怎么解决
程序跑飞就是程序执行错误,程序不知道运行到哪里,这就需要设定标志位,寻找跑飞的地方,再改
⑥ 单片机程序老跑飞怎么回事
1、程序本身设计错误。
2、硬件设计问题。
3、干扰信号过大。
如读入开关量的信号,要在信号的最佳稳定期内读入数据,就要花费不少调试时间的。
⑦ 单片机程序:while(1) ; //无限循环,防止程序跑飞。什么意思
这一般用在仅仅依靠中断工作的场合,也就是说,单片机做完初始化后,之后的所有工作完全由中断产生时才完成相应的工作,比如日历等等。如果没有这句的话,程序就如流水一样永不回头的走了,执行完最后一句就寿终正寝。
⑧ 怎么我的单片机程序老跑飞(STC的)而且跑飞后再写也写不进去。
1、你好我想问你知道跑飞的意思吗,程序跑飞一般是指PC指针不按照你的程序思路去指向了,比如你退出中断的时候应该回到之前的那个压栈PC处却没有,这样的现象我们认为程序跑飞。
2、对于程序跑飞一般我们采用看门狗的方式来让程序复位,防止程序跑飞造成严重后果。
3、看不到现象不一定是跑飞,不过STC这类片子没有仿真器支持的吧一般,如果是AVR或者PIC或者430用仿真器看看PC就知道了。
4、可以将某个口的输出特征电平,用于检测程序是否跑飞,运行后检测该口的电平是否有差异即可。
5、程序跑飞了是可以在写入的,除非是芯片损坏了,是不是电源或者复位电平等导致芯片挂了,所以你认为是程序跑了一遍就挂掉了。
6、打好基础,搞清楚细节问题,对你很有帮助,比如看门狗如何使用等这类问题,编程谁都会的,外面一大把都是。什么高中毕业,大专生,就连现在本科生都去抢单片机的饭碗,搞不懂。
7、系统的学习,不要只看到片面的东西,学会自己的一套分析问题的方式。
8、打字很累,有时间hi我
⑨ 单片机程序死机跑飞可能有哪些原因
单片机程序死机,跑飞了可以从以下几个方面查找原因:
1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;
2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。
3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。
4. 无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;
5. 看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;
6. 堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。