0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于单片机程序跑飞死机的原因

GReq_mcu168 来源:玩转单片机 2020-08-04 17:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

经常接触单片机的朋友,肯定遇到过单片机程序跑飞的问题。由于程序较为复杂,所以一旦出现跑飞的现象就比较难以查找错误出现的地方,网络上对错误的解释和解决方法也比较五花八门,并不方便查找。小编特意帮大家整理了关于单片机程序跑飞死机的原因,大家快来看看能不能在其中找到自己想要答案吧。

单片机程序死机,跑飞了
可以从以下几个方面查找原因:

1、意外中断

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

2、中断变量处理不妥

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

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

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

4、无条件的死循环

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

5、看门狗没有关闭

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

6、堆栈溢出

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

通过本篇文章,大家是否找到了自己想要的问题解决方法了呢?就算没有找到,本篇文章也能帮助大家在一定程度上预防跑飞现象的发生。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45347

    浏览量

    663831
  • 数组
    +关注

    关注

    1

    文章

    420

    浏览量

    27115

原文标题:单片机程序总跑飞?小技巧帮你忙

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    芯源MCU修改频率导致原因

    MCU的系统时钟从默认的8MHz改为48MHz后,程序原因为:CW32F030 内部的 FLASH 存储器支持最快 24MHz 频率的操作时钟,当配置的 HCLK 频率大于 24
    发表于 12-09 07:26

    如何解决MCU系统时钟频率改变导致的程序

    如何解决MCU系统时钟频率改变导致的程序问题
    发表于 12-05 08:20

    芯源芯片如果出现程序情况一般怎么处理?

    在做三表的时候,如果芯片出现的死机或者程序的情况,一般是怎么处理?外置看门狗还是内置看门狗?还是用什么手段啊?
    发表于 12-03 07:27

    在使用Saiyuan的CW32单片机时,频率调整导致系统,影响正常运行,怎么解决?

    在使用Saiyuan的CW32单片机时,频率调整导致系统,影响正常运行。该怎么做?
    发表于 11-28 08:09

    单片机如何选择复位方式?

    在数字电路领域,单片机的复位是确保其正常启动与运行的重要环节,复位功能主要是将单片机内部状态重置为初始状态,避免程序运行过程中的混乱、
    发表于 11-26 08:09

    用IAP去升级,遇见现象怎么解决

    1、检查供电电压 确保单片机的供电电压稳定,且在正常工作电压范围内。 检查电源文波大小,确保Ldo供电电压和电流满足要求。 在单片机的vdda和vssa引脚接磁珠,各电源硬件接滤波电容。 2
    发表于 11-26 06:34

    单片机应用系统的可靠性设计介绍

    指标。由于51单片机的指令系统是复杂指令集结构,致使其抗干扰性能较低,尤其用在工业控制的场合,如果不增加额外的抗干扰措施,甚至无法正常工作。单片机软件抗干扰设计的主要目的就是及时发现“
    发表于 11-25 06:21

    单片机可靠性差的解决办法

    1、软件陷阱是什么? 软件陷阱是一种用于捕获并处理单片机程序”现象的技术,当程序执行过程中因干扰而偏离正常轨道时,软件陷阱可及时发现
    发表于 11-25 06:10

    硬件问题造成的MCU死机原因

    关于MCU死机问题,近期小编在出差期间遇到多起,且原因不同。所以,今日小白借此机会讲一讲因硬件问题造成的MCU死机。 MCU不良 在遇到死机
    发表于 11-24 08:07

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、程序调试和性能优化具有重要
    的头像 发表于 07-25 11:39 491次阅读

    单片机怎么烧程序

    单片机程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是单片机
    的头像 发表于 07-23 11:47 666次阅读

    STC单片机范例程序

    电子发烧友网站提供《STC单片机范例程序.zip》资料免费下载
    发表于 06-04 16:27 9次下载

    单片机各种复位电路原理

    使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“
    发表于 05-30 16:53

    晶振受到电磁干扰对单片机的影响

    单片机可以正常运行的一个因素就是晶振的稳定性。在工作过程中,晶振可能会受到电磁干扰的影响,导致单片机发生故障,甚至出现死机的情况。
    的头像 发表于 03-20 18:01 1005次阅读

    Deepseek上单片机?RT-Thread上通大语言模型

    前言单片机也能聊天?RT-Thread上通大语言模型在RT-Thread论坛上忽然看到了单片机和大模型对话的文章,想着春节期间看到大语言模型的热度持续攀升,恰巧手头有块RA8D1VisionBoard开发板,于是尝试着在Vis
    的头像 发表于 02-07 18:59 2384次阅读
    Deepseek上<b class='flag-5'>单片机</b>?RT-Thread上<b class='flag-5'>跑</b>通大语言模型