1.意外中断。

是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。

2. 中断变量处理不妥。

若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加 volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。

3. 地址溢出,常见错误为指针操作错误。

我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4. 无条件的死循环。

比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;

5. 看门狗没有关闭。

有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;

6. 堆栈溢出。

最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问 题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。

7.大牛们补充下...

单片机程序跑飞的原因相关推荐

  1. 单片机长时间程序跑飞_单片机程序跑飞的三种现象、原因及解决方法

    今天在编写单片机程序的时候,由于中断服务程序写的不好,导致单片机程序总是跑飞,最后费了好长时间,花了很大功夫才找到问题原因,由此总结了单片机程序跑飞的三种现象.原因及解决方法. 一.数组越界(数组溢出 ...

  2. 困扰一周的奇葩bug:重复相似代码多,导致单片机程序跑飞

    今天是个好日子,困扰一周的bug终于解决了,迫不及待将这个奇葩问题分享给各位朋友~ 硬件环境: 国产MCU:华大HC32L130 问题描述: 最近做一款基于Modbus协议的三通道温度采集模块,程序设 ...

  3. 单片机程序跑飞死机的几种原因

    在使用单片机过程中,经常会出现程序运行一段时间后,不能够正常相应的情况.一般分为软件原因和硬件原因,其中硬件原因比较容易查,软件原因就较为复杂. 软件导致单片机死机的原因 1.指针异常 指针未初始化或 ...

  4. 程序跑飞的原因与解决办法(转载)

  5. 嵌入式开发——程序跑飞原因总结

    前言 在嵌入式软件开发中,程序跑飞是一个比较棘手的问题.为什么说棘手,那是因为当程序跑飞时,往往没有任何错误信息报出来,Log停止的地方通常也不是出现问题的地方,因此这让我们很难定位问题. 基于以上原 ...

  6. 【跑飞、死机】单片机 msp430程序跑飞原因和解决方式积累

    目录 单片机 msp430程序跑飞原因和解决方式积累 MSP430 数组填充越界引起的栈溢出 导致程序跑飞 [单片机重启]MSP430重启/频繁重启/跑飞 原因分析 单片机 msp430程序跑飞原因和 ...

  7. 教你如何找到导致程序跑飞的指令

    调试嵌入式程序时,你是否遇到过程序跑飞最终导致硬件异常中断的问题?遇到这种问题是否感觉比较难定位?不知道问题出在哪里,没有办法跟踪?尤其是当别人的程序踩了自己的内存,那就只能哭了:( 今天在论坛上看有 ...

  8. MPC5748G开发笔记-----MPC5748G程序跑飞uSDHCDriverIRQHandler

    MPC5748G程序跑飞uSDHCDriverIRQHandler 文章目录 MPC5748G程序跑飞uSDHCDriverIRQHandler 前言 一.跑飞时的状态 二.利用异常中断获取位置 1. ...

  9. AUTOSAR实战教程 - 软件集成调试_程序跑飞一招解决

    工欲善其事必先利其器. AUTOSAR工程如此庞大的代码量,如果没有一个科学.程式化的方法来调试程序, 那么程序跑飞之后使用三板斧:打断点.看变量.对比正常代码和异常代码的变动,这显然是不能够胜任工作 ...

最新文章

  1. web报表移动端如何进行移动设备绑定与撤销
  2. Cacti 显示自定义的 SNMP 数据
  3. dropout+Batch Normalization理解
  4. 使用Xamarin实现跨平台移动应用开发
  5. Linux基础知识part3
  6. php上传,PHP-文件上传和下载「程序员培养之路第三十八天」
  7. 学生学籍管理系统python_使用Python实现 学生学籍管理系统
  8. 爬虫实现股票分析(三)
  9. 批量快速的导入导出Oracle的数据(spool缓冲池、java实现)
  10. ER图(实体关系图)怎么画?
  11. 秒杀系统设计的关键点思考
  12. android 屏幕orientation,关于屏幕旋转而orientation值不改变的问题
  13. img标签,hr标签
  14. MySQL基础学习(尚硅谷 婷姐)自学笔记_001
  15. Python函数 — 类型提示和存根文件
  16. 深度报告:一文看懂通信新基建五大方向
  17. Python自动化测试框架之Pytest相关用法-Fixture(2)
  18. 限制7种范围IP的ASP自定义函数(改进)
  19. 期权新手学习常见问题
  20. 关键路径中最早/迟发生时间

热门文章

  1. iOS常用功能 - 根据链接生成二维码图片
  2. java word插件开发_java生成word的几种方案
  3. ELK入门(Elastic Stack)
  4. 基于51单片机的火焰报警器
  5. hdu 6287 口算训练(二分+质因数分解+思维)
  6. shadertoy 实现简易指南针
  7. 过滤器(7)_过滤器处理 POST 请求乱码
  8. 中国医药电子商务平台行业十四五盈利规模与运营前景分析报告2022年
  9. mysql安装时的英文_安装MySQL遇到的常见英文翻译
  10. 统计学中的P值与显著性的意义