
在编写单片机程序的时候 , 由于中断服务程序写的不好 , 导致单片机程序总是跑飞 , 最后费了好长时间 , 花了很大功夫才找到问题原因 , 由此总结了单片机程序跑飞的三种现象、原因及解决方法 。
1数组越界/溢出
现象:
单片机程序在函数中运行时 , 总是在运行到函数末尾 , 要跳出函数时 , 程序跑飞 。
原因:
数组越界(数组溢出) , 函数中定义的数组元素的个数小于程序中实际使用的数组元素的个数 , 例如在函数中定义了一个数组ucDataBuff[10
, 这个数组只有10个元素 , 但是在函数中却有这样的语句ucDataBuff[10
=0x1a这个语句是给数组的第11个元素赋值 , :由于定义的数组只有10个元素 , 从而导致赋值语句中不知道把0x1a放到什么地方 , 从而导致程序跑飞 。
解决方法:
如果在调试程序时 , 发现程序总是在函数执行完毕时跑飞 , 多数情况是发生了数组越界(数组溢出)的错误 , 仔细检查函数中调用的数组是否存在越界(溢出)的情况 。
2中断服务程序缺失
现象:
程序运行过程中总是跑飞 。
原因:
程序中打开了某个中断 , 但是却没有相应的中断服务程序 , 从而导致在中断发生后 , 找不到中断服务程序入口 , 从而导致程序跑飞 。
解决方法:
检查程序中是否存在打开了某个中断 , 但是没有相对应的中断服务程序 。
3看门狗复位
现象:
在执行一段较为耗费时间的程序时 , 程序跑飞 , 并且总是跳到复位位置处 。
原因:
程序中使用了看门狗 , 但是没有及时“喂狗” , 从而导致看门狗复位 , 使程序直接跳到复位位置 。
解决方法:
根据程序运行时间 , 尤其是一定要计算清楚最耗时的那段程序的运行时间 , 然后准确设置看门狗的复位时长 , 定时“喂狗” , 尤其是如果有死循环的情况 , 一定要在死循环中记得“喂狗” 。
【单片机|单片机程序又跑飞? ! 三种跑飞现象分析】声明:本文转载自网络 , 如涉及作品内容、版权和其它问题 , 请于联系工作人员 , 我们将在第一时间和您对接删除处理!
- 微信更新正式版!“清理缓存”功能变强,小程序终于能分享到朋友圈
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- 你购买新手机一般会选择哪种渠道?是线下门店、线上官方旗舰店|小程序上网购手机竟变充电头!50多人受骗 损失超百万
- 程序员|俄罗斯传来新消息,无法更新微软系统,国产操作系统崛起的机会?
- PHP|PHP到底适不适合做大型网站?
- 程序员|出国求职的中年程序员:焦虑缓解了,新问题也来了
- 小程序|久未露面的马云,驾着13亿游艇在西班牙游玩,说好当乡村教师呢?
- 维利科技:小程序开发的方式有哪些以及如何挑选软件定制公司?
- 开源软件|嵌入式开发:技巧和窍门——引导加载程序跳转到应用程序代码
- 小程序|任劳任怨送快递12年:京东001号快递员金宜财,刘强东给了他什么
