单片机程序死机原因查找方法

发布者:支持中文最新更新时间:2015-03-18 来源: diangon关键字:单片机  程序死机  查找方法 手机看文章 扫描二维码
随时随地手机看文章
   单片机程序死机,跑飞了可以从以下几个方面查找原因:
    1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象
    2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断;否则出现造成数据乱套。
    3. 地址溢出,常见错误为指针操作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。
    4. 无条件的死循环;比如使用while(x);等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制;
    5. 看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗;
    6. 堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。
关键字:单片机  程序死机  查找方法 引用地址:单片机程序死机原因查找方法

上一篇:MCU-ISP和ICP的区别
下一篇:单片机应用程序设计常用数据类型

推荐阅读最新更新时间:2024-03-16 13:55

PL2303单片机串口转USB口实现串行通信
引言 随着科学技术的快速发展,单片机的应用已经渗入到了生产、生活的方方面面,其应用范围越来越广泛,应用前景越来越好。基于单片机的开发应用在目前创新技术发展中一支独秀,非常受广大科技爱好者、在校大学生以及科技开发工作者的青睐。多功能、超强型的单片机在市场上也层出不穷,为单片机的开发应用提供了很好的基础。目前,在单片机的应用系统设计中,USB接口的使用越来越多,简化了单片机系统与外部系统进行信息交换的接口电路,提高了信息交换的可靠性及交换速度。目前市场上提供的各类型单片机品种中,有些型号的单片机在其内部集成有USB接口部件,但大部分的单片机不含有USB接口电路。对芯片内部不含有USB串行接口的单片机,进行USB接口设计时,要通过外
[单片机]
PL2303<font color='red'>单片机</font>串口转USB口实现串行通信
PIC单片机SPI接口配置
一般所有单片机的SPI接口都需要配置以下几点内容(CPU作为SPI主模式): 1.引脚功能/方向配置:标准SPI接口由4根线组成,SCK,MISO(SDI),MOSI(SDO),SS(CS),其中SCK,MISO,MOSI都应设置成SPI功能,并且SCK和MOSI设置成输出引脚,MISO设置成输入引脚,SS引脚设置成普通GPIO功能,并且设置成输出。 2.SPI参数配置: (1)SPI的时钟频率设置,一般设置范围几K到几M不等,该频率决定SPI的时钟线和数据线的速率。 (2)SPI时钟极性 (3)SPI时钟相位(边沿) (4)数据宽度,一般选择8位或者16位 (5)位序,传输过程中是高位在前,还是低位在
[单片机]
PIC<font color='red'>单片机</font>SPI接口配置
AVR单片机熔丝位的配置
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是 “配置熔丝位成为未编程状态“1”或成为已编程状态“0””。 (2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。 (3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选
[单片机]
[单片机框架][bsp层][cx32l003][bsp_gpio] GPIO配置和使用
GPIO(general purpose intput output)是通用输入输出端口的简称,可以通过软件来控制其输入和输出。51单片机芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、 控制以及数据采集的功能。过 GPIO 最简单的应用还属点亮 LED灯了,只需通过软件控制 GPIO 输出高低电平即可。当然GPIO还可以作为输入控制,比如在引脚上接入一个按键,通过电平的高低判断按键是否按下。 通用输入/输出口用于芯片和外部进行数据传输,共有 4 组 GPIO:GPIOA、GPIOB、GPIOC 和GPIOD。4 组 GPIO 的功能基本相同,可以通过配置将 GPIO 映射到对应芯片引脚,每个引脚可以被独立配置为
[单片机]
基于单片机的变频设备远程监控系统的实现
  概述:   近年来,随着国家建设节约型社会的提出,对节能节电的重视程度越来越高,特别是加大了对国有企业中的大型用电设备的节能改造力度,变频器在油田,煤矿,发电厂,钢铁厂等国有大型企业中的使用数量越来越多。特别是油田上,抽油机变频器,潜油电泵变频器,注水泵变频器和加热电源等电力电子设备在油田的大面积推广使用。根据油田生产野外作业的特殊性----每个设备之间的距离比较远,但又相对集中,所以基于各种现场总线的集中控制显得越来越有必要。CAN总线在变频设备的集中管理和控制上显示了突出的优势,其超远距离传输,和超强的抗干扰性是其他总线所不能比拟的。另外最重要的一点是在整个控制系统中,不分主从的组网拓扑结构,方便的增减通讯节点。   
[单片机]
基于<font color='red'>单片机</font>的变频设备远程监控系统的实现
在Visual Studio Code上开发单片机程序(基于IAR msp430)
1. 安装iar msp430 软件和vscode。 最基本的了 2. 安装插件 IAR For Visual Studio Code c++(官方的c++插件也就是第一个) 3. 在iar中建立工程,设置必要的内容 4.配置vscode open folder 打开你的project的对应的文件夹。 ctrl shift B 打开命令行 输入iar 会弹出框进行选择。当然是选择第一个,select project 然后下方会出现,这样的栏目可以进行选择我的是默认的选择,也就是平台还有编译器和你的设置。 - 最后也就是build,在terminal中选择 run task 中可以看到build和rebuild的
[单片机]
Microchip推出全新8位单片机开发板,可连接5G LTE-M窄带物联网网络
A- 蜂窝迷你开发板是 AVR®系列的产品,为开发人员提供了构建设备的简易蓝图   物联网网络开发人员希望在设计应用中便捷地实现安全蜂窝连接,但却面临着复杂的设计和高昂的部署成本。为了给那些对位置灵活性、低功耗和部署简单性有严格要求的网络设计人员提供解决方案,crochip chnology Inc.(美国微芯科技)今日宣布推出基于AVR128DB48 8位()的AVR-IoT 蜂窝迷你开发板。该解决方案为在窄带物联网网络上构建和执行器节点提供了强大的平台。   AVR-IoT 蜂窝迷你开发板是一款小尺寸(SFF)板,是希望将物联网设备连接到现有5G网络的开发人员的理想解决方案。这对于移动中的设备或位于偏远地
[机器人]
基于单片机和CPLD的高精度大型望远镜伺服控制器设计
设计基于高速单片机C8051F120和CPLD的高精度大型望远镜的伺服控制器,由单片机实现闭环控制算法、上位机通信和LCD显示控制,CPLD实现增量式编码器计数、电机驱动波形发生以及I/O接口。该控制器可独立进行电机控制,也可配合上位机进行控制,具有实时性和抗干扰能力强、成本低、调试方便等特点。 引言 微电子技术和计算机的发展推动着伺服控制技术的进步,控制系统的硬件系统越来越高速化、小型化、模块化,功能也日趋强大完善;而且,伺服控制技术是朝着更开放、更加模块化的控制结构的方向发展的,要求控制器算法实现简单、控制接口灵活,针对不同的伺服控制对象时硬件系统不变,软件系统也可以完成参数的自动调整。 在高精度大型望远镜伺服控制应用
[单片机]
基于<font color='red'>单片机</font>和CPLD的高精度大型望远镜伺服控制器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved