首页 > 其他分享 >异常

异常

时间:2023-05-09 23:46:14浏览次数:27  
标签:复位 看门狗 单片机 数组 异常 指针

异常
异常简介
异常是指控制器未按照预期流程执行,本文所提异常特指单片机跑飞,复位的状况
异常可以看成是单片机的一种自我保护机制,当发送非预期情况时,控制器主动进入一个实际上无任何逻辑的无限循环子函数,从而防止进一步发生错误,通常如下操作可能进入空循环。
异常的发生
A.非法操作内存
1.操作没有实际指向的空指针。
指针变量在定义后,需要将指针指向一个合法的地址,如果指针变量没有指向地址,则默认为null,对null操作会导致异常;如果指针变量指向的地址不合法,按照指针类型操作此地址可能会导致异常。
2.数组越界
对数组进行遍历操作时,通常使用索引,如果索引值大于数组实际大小,此时再通过索引操作数组,可能会意外修改其他内存区域,从而引发异常。
3.栈溢出
单片机RAM空间有限,通常栈空间比较小,在一个函数内部定义较大的数组时,有可能会发送栈移除,从而导致异常。另外一种特殊情况是:递归函数没有结束条件,无限调用导致栈空间耗尽。
B.功能未定义
1通常发生与中断相关:当使能了某个中断,但没有实现具体功能,发生中断时,控制器使用默认的空函数接管中断,防止继续运行发生更严重的错误。
C看门狗复位
如果系统复位且找不到原因,在排除以上错误后,需要检查是否使能了看门狗,通常看门狗复位是由于流程卡死导致主循环不能及时喂狗,而流程卡死多发生在等待某个寄存器状态位,这种情况就需要设置一个合理的超时时间,不能使用while。

标签:复位,看门狗,单片机,数组,异常,指针
From: https://www.cnblogs.com/yixinren/p/17386687.html

相关文章

  • C++异常和错误处理机制:如何使您的程序更加稳定和可靠
    在C++编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C++中的异常处理和错误处理机制。什么是异常处理?异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。例如,当程序试图访问......
  • C++异常和错误处理机制:如何使您的程序更加稳定和可靠
    在C++编程中,异常处理和错误处理机制是非常重要的。它们可以帮助程序员有效地处理运行时错误和异常情况。本文将介绍C++中的异常处理和错误处理机制。什么是异常处理?异常处理是指在程序执行过程中发生异常或错误时,程序能够捕获并处理这些异常或错误的机制。例如,当程序试图访问一......
  • 微信小程序 自定义组件 监听数据变化 出现异常 Maximum call stack size exceeded.
    代码调用处: 组件内部  本地调试无异常,发布之后出现此异常解决方法:监听属性steps的值变化时,调用处不能使用双向绑定,去掉steps的双向绑定即可,具体的原因未知(不知为啥本地调试不会抛异常) ......
  • keepalived 发生异常进行主备切换的notify.sh脚本
    notify.sh#!/bin/sh#########DESC###########keepalive切换告警提示##########################配置文件和手机号码配置config_file="/etc/keepalived/hostinfo.cfg"alert_user_file="/etc/keepalived/alert_user.cfg"keepalive_config_file="/etc/keepaliv......
  • C#自定义异常就这么简单
    C#是一种强类型语言,可以捕获和处理各种异常,从而帮助我们发现程序中出现的错误。在程序开发过程中,如果需要找到特定的错误情况并处理,这时就需要创建自定义异常。本文将介绍如何在C#中创建和使用自定义异常。1、什么是异常?异常是指在程序执行期间发生的错误或异常情况,例如除法中除......
  • oracle异常处理
    序言最近在工作中遇到这么一个场景:在同一网段内存在着A库和B库,需要将A库下某些表的数据同步到B库B库跑着定时任务,定时调用存储过程将A库下的数据同步到B库。B库和A库是通过建立dblink建立连接的。【关于dblink相关可能会后面单独写博客,先给自己挖个坑,慢慢填哈哈】。定时任......
  • 一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应
    作者:京东物流 覃玉杰1.简介GracefulResponse是一个SpringBoot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。使用GracefulResponse进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。强烈推荐你花3分钟学会它!......
  • SpringBoot全局异常处理
    @ControllerAdvice:使用该注解表示开启了全局异常的捕获; 参考链接[1]https://www.cnblogs.com/xuwujing/p/10933082.html[2]https://gitee.com/bruce6213/global-exception-handler......
  • git出现异常处理
    这个教程,错过了,就错过了,各位!!!@[toc]前言有时候,公司提交的代码必须使用公司邮箱,而你误操作,直接把自己个人邮箱提交上去了,此时你就会遇到这样的需求:如何修改git已提交的邮箱?(因为有些公司是不允许使用个人邮箱提交代码)异常master分支合并到develop分支,执行gitpush操作时。remote:......
  • elasticsearch7.x 插件安装异常
     (本博客近期所有es文章都是基于elasticsearch7.1.0),请选择Plugin[analysis-pinyin]wasbuiltforElasticsearchversion7.1.1butversin明显是版本号不一致,解决:进入vimelasticsearch-7.1.0/plugins/pinyin/plugin-descriptor.properties修改为elasticsearch对应版本,重新启动E......