单片机为什么容易死机(单片机运行一段时间死机)
当朋友们看到这个文章时想必是想要了解单片机为什么容易死机相关的知识,这里同时多从个角度为大家介绍单片机运行一段时间死机相应的内容。
文章目录一览:
- 1、51单片机中断时卡死
- 2、单片机死机的原因求助高手
- 3、请教各位大侠,关于单片机长时间运行死机的问题
- 4、单片机低电压导致的死机
- 5、STM32单片机程序死机,有哪些原因引起
- 6、stc单片机易死机吗
51单片机中断时卡死
1、首先51单片机意外中断,查看51单片机是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。
2、其次地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机。
3、最后看门狗没有关闭。有的单片机即使没使用看门狗开机时也有意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先显式清除看门狗再关闭看门狗。
单片机死机的原因求助高手
单片机死机的原因,通常是因为周围环境干扰比较严重,如工厂车间各种机器,电焊机等工作时,就是产生很强的干扰脉冲,加上单片机的防干扰措施不到位,就是会被干扰破坏了正常的动行,造成飞程序,进入死机状态。
如果是在这种环境下的单片机,就是做好防干扰措施。
请教各位大侠,关于单片机长时间运行死机的问题
长时间运行死机的原因相对也算多:
①有振荡器(特别是陶瓷振荡器)振荡不良,长时间运行后,振荡器停振导致单片机死机。
②有单片机(特别是国产某晶)性能不佳,平均每1~1月就有一次死机。
③有设计(硬件抗扰)不佳,使用环境出现恶劣条件(各种干扰:静电、电磁、脉冲……),导致单片机死机。
…………
对于①,重新上电,99%以上能恢复正常,1%振荡器就坏了。
对于②,重新上电,100%能恢复正常。
对于③,重新上电,50%~70%能恢复正常,剩下的,很可能被静电击穿MCU,导致永久性损坏。
解决方法:
对于①,采用晶体振荡器(就是晶振,金属外壳那种,记得匹配好旁路电容)。
对于②,更换工业性能稳定的单片机品牌。
对于③,硬件设计考虑多点环境干扰,这对硬件工程师要求比较高,不是毕业生或工作经验一年两年的人能做的。必须有相关行业经验的工程师,不然就是工作10年8年也没这能力。(更换工业性能良好的单片机,可以将“重新上电恢复正常”提高到80%~90%,但不能解决死机。)
单片机低电压导致的死机
单片机一般是 COMS 结构,电源电压范围已经很宽,如果电压过低,内部程序以及外部的控制电路工作极不稳定,会造成控制错误,还不如停止单片机的工作,这就是低电压复位。 低电压复位就是检测电源电压的结果,就是“不让单片机工作”。 我估计你说的“不让单片机工作”,是指程序继续工作,只是把控制停下,是低电压下,程序工作是不可靠的。具体情况就要看你的设备而定了。现在写程序一般都有看门狗这样的检测程序,如果死机的话,会重启。当然,也不排除看门狗有问题,当然,更多的是程序本身有问题而导致的! 外部可能引起死机可能就是电压不稳、静电过大等原因。单片机程序死机,跑飞了可以从以下几个方面查找原因:
1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象;
2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。
STM32单片机程序死机,有哪些原因引起
1、意外中断。是否打开了某个中断,但是没有响应和清除中断标志,导致程序一直进入中断,造成死机假象。
2、中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile。
其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。
扩展资料:
其他原因:
1、地址溢出。常见错误为指针操作错误。要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。
2、无条件的死循环。比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;
3、看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;
4、堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当把以上几条都试过不能解决问题,试一试把被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量。
stc单片机易死机吗
是。内部时钟非常不稳定,容易造成单片机死机,解决方案: 下载程序的时候,选择外部时钟。就能完美解决死机的问题。
单片机为什么容易死机的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机运行一段时间死机、单片机为什么容易死机的信息别忘了在本站进行查找喔。