设计网页的软件,aso优化推广,当今做那些网站致富,怎么查到代码是哪个网站做的参考#xff1a;单片机程序又跑飞#xff1f; 作者#xff1a;嵌入式ARM 网址#xff1a;https://mp.weixin.qq.com/s/a22zVdSfCqWjSmlBxK2R1Q 目录数组越界/溢出中断服务程序缺失看门狗复位单片机中有看门狗#xff0c;长时间不喂狗#xff0c;程序就会复位。为什么长时… 参考单片机程序又跑飞 作者嵌入式ARM 网址https://mp.weixin.qq.com/s/a22zVdSfCqWjSmlBxK2R1Q 目录数组越界/溢出中断服务程序缺失看门狗复位单片机中有看门狗长时间不喂狗程序就会复位。为什么长时间不喂狗呢这是因为程序跑飞了抛开外部因素不谈。今天就和大家分享一下单片机程序跑飞的几个原因。
在编写单片机程序的时候由于中断服务程序写的不好导致单片机程序总是跑飞最后费了好长时间花了很大功夫才找到问题原因由此总结了单片机程序跑飞的三种现象、原因以及解决方法。
数组越界/溢出
现象
单片机程序在函数中运行时总是在运行到函数末尾要跳出函数时程序跑飞。
原因
数组越界数组溢出函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数例如在函数中定义了一个数组ucDataBuff[10]这个数组只有10个元素但是在函数中却有这样的语句ucDataBuff[10]0x1a,这个语句是给数组的第11个元素赋值由于定义的数组只有10个元素从而导致赋值语句中不知道把0x1a放到什么地方从而导致程序跑飞。
解决方法
如果在调试程序时发现程序总是在函数执行完毕时跑飞多数情况是发生了数组越界数组溢出的错误仔细检查函数中调用的数组是否存在越界溢出的情况。
中断服务程序缺失
现象
程序运行过程中总是跑飞。
原因
程序中打开了某个中断但是却没有相应的中断服务程序从而导致在中断发生后找不到中断服务程序入口从而导致程序跑飞。
解决方法
检查程序中是否存在打开了某个中断但是没有相对应的中断服务程序。
看门狗复位
现象
在执行一段较为耗费时间的程序时程序跑飞并且总是跳到复位位置处。
原因
程序中使用了看门狗但是没有及时“喂狗”从而导致看门狗复位使程序直接跳到复位位置。
解决方法
根据程序运行时间尤其是一定要计算清楚最耗时的那段程序的运行时间然后准确设置看门狗的复位时长定时“喂狗”尤其是如果有死循环的情况一定要在死循环中记得“喂狗”。