热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

STM32学习笔记|引起电源和系统异常复位的原因

关注星标公众号,不错过精彩内容每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种。STM32的复位功能

关注+星标公众,不错过精彩内容

每一块处理器都有复位的功能,不同处理器复位的类型可能有差异,引起复位的原因也可能有多种。

STM32的复位功能非常强大,可通过软件、硬件和一些事件触发系统复位,而且通过其复位状态标志可分析复位原因。该部分位于STM32的RCC(Reset and Clock Control)模块。

嵌入式专栏

1

STM32 复位介绍

对于STM32来说,复位通常分为三种类型:系统复位、电源复位和备份域复位。本文结合STM32F4描述系统和电源复位的内容。

1. 系统复位

除了RCC的复位标志和备份域中的寄存器外,系统复位会将其它全部寄存器都复位为复位值。

产生系统复位事件:

  • NRST 引脚低电平

  • 窗口看门狗计数结束

  • 独立看门狗计数结束

  • 软件复位

  • 低功耗管理复位

2. 电源复位

除备份域内的寄存器以外,电源复位会将其它全部寄存器设置为复位值。

产生电源复位条件:

  • 上电/掉电复位或欠压复位

  • 在退出待机模式时

注:备份域具有特定的复位,其复位仅作用于备份域本身(本文暂不讲述备份域复位)。

3. 复位电路简图

由上图可以看出来,NRST引脚、看门狗等各种事件最终都能引起系统复位。

嵌入式专栏

2

STM32 内核和系统复位

上一章节站在STM32整体层面讲述了产生复位的多种事件,本章节进一步描述STM32的内核和系统复位。

STM32由内核(如:Cortex-M4)和各种片内外设(如UART)资源组成,其中软件复位可指定是内核复位还是系统复位。

(图片来源网络)

1. 内核复位

在Cortex-M内核文档中大概有这样的描述:通过设置 NVIC 中应用程序中断与复位控制寄存器(AIRCR)的VECTRESET 位,可只复位处理器内核而不复位其它片上设施。

也就是说,这样操作只复位Cortex-M内核,不会复位UART这些片内外设。

内核复位函数(参考内核代码修改而来):

void NVIC_CoreReset(void)
{__DSB();SCB->AIRCR &#61; ((0x5FA <AIRCR & SCB_AIRCR_PRIGROUP_Msk) |SCB_AIRCR_VECTRESET_Msk);       //置位 VECTRESET__DSB();while(1) { __NOP(); }
}

2. 系统复位

软件复位中的系统复位操作的寄存器位&#xff08;SYSRESETREQ&#xff09;不同&#xff0c;复位的对象为整个芯片&#xff08;除后备区域&#xff09;。

系统复位函数&#xff1a;

void NVIC_SysReset(void)
{__DSB();SCB->AIRCR &#61; ((0x5FA <AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); //置位 SYSRESETREQ__DSB();while(1) { __NOP(); }
}

嵌入式专栏

3

STM32 复位来源

为了方便软件工程师调试和查找&#xff08;复位&#xff09;问题&#xff0c;STM32设计有个状态寄存器保存了各种复位来源的状态。

如下图所示&#xff08;具体请查阅参考手册&#xff09;&#xff1a;

嵌入式专栏

4

STM32 引起异常复位的原因

上面讲述了引起复位的事件有多种&#xff0c;本章节将结合实际应用&#xff0c;描述常见引起复位的原因及解决办法。

原因一&#xff1a;NRST引脚电平被拉低引起复位

有些特殊环境&#xff0c;特别是大型工厂&#xff0c;外界或内部会使电源产生干扰信号&#xff0c;使STM32的NRST引脚电平被拉低&#xff0c;从而导致系统复位。

分析原因&#xff1a;NRST引脚电平拉低20us就会引起系统复位&#xff0c;电源上一个纹波&#xff0c;或者外部静电都会引起电源被拉低20us。

解决办法&#xff1a;电源滤波、使用隔离电源、添加屏蔽措施等。

原因二&#xff1a;欠压引起复位

有些产品在设计之初没有综合计算负载&#xff08;与STM32同电源&#xff09;&#xff0c;因负载过大&#xff0c;使其欠压&#xff0c;从而导致复位。

分析原因&#xff1a;STM32除了上电和掉电复位之外&#xff0c;绝大部分STM32还有一个欠压复位&#xff0c;当电源电压 (VDD) 降至所选 VBOR 阈值以下时&#xff0c;芯片将复位。

解决办法&#xff1a;选择负载更大的电源、通过软件配置合理的欠压值VBOR。

原因三&#xff1a;数字、模拟电源地压差引起复位

有工程师将VSS 和 VSSA之间使用一个几欧&#xff0c;甚至几十欧的电阻连接&#xff0c;有时候&#xff08;有大电流经过地线&#xff09;就会因为电源地的压差导致芯片&#xff08;电源&#xff09;复位。

分析原因&#xff1a;我们比较关注 VDD 和 VDDA 的关系&#xff0c;但忽略了 VSSA 和 VSS 压差需要小于 50mV这一点&#xff08;具体可以看数据手册&#xff09;。如果有大电流的情况&#xff0c;则会引起电源地存在压差。

解决办法&#xff1a;尽量使用完全连接地的方式处理&#xff0c;比如0欧电阻&#xff0c;或者隔离电源。

原因四&#xff1a;看门狗超时喂狗引起复位

有不少工程师设计低功耗产品时&#xff0c;使用了看门狗&#xff0c;但是他们往往忘记了芯片睡眠模式不能停止喂狗&#xff0c;从而导致看门狗复位。

分析原因&#xff1a;STM32进入睡眠之后&#xff0c;看门狗依然继续在工作&#xff0c;如果不及时喂狗&#xff0c;芯片会产生看门狗复位。

解决办法&#xff1a;进入睡眠之前设置更长的喂狗时间&#xff0c;同时不定期唤醒芯片进行喂狗。

 

复盘一下

▼复位通常分为&#xff1a;系统复位、电源复位和备份域复位&#xff1b;

▼STM32软件复位分&#xff1a;内核和系统复位&#xff1b;

▼STM32复位来源&#xff1a;状态寄存器保存复位来源状态&#xff1b;

▼常见复位问题&#xff1a;NRST被拉低、欠压、压差、看门狗超时喂狗等&#xff1b;

------------ END ------------

后台回复『STM32』『STM32学习笔记』相关文章。

欢迎关注我的公众号&#xff0c;回复“加群”按规则加入技术交流群&#xff0c;回复“1024”查看更多内容。

欢迎关注我的视频号&#xff1a;

点击“阅读原文”查看更多分享。


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • Win10 64位旗舰版的优势及特点详解
    本文详细介绍了Win10 64位旗舰版的优势及特点,包括更安全的源安装盘、永久激活方式、稳定性和硬件驱动的集成,以及人性化的维护工具和分区功能。通过阅读本文,您将了解到Win10 64位旗舰版相比其他版本的优势和特点。 ... [详细]
  • 现在学vb6还靠得住么?语言只是工具,关键是思想。程序=算法+数据结构。除了汇编,其他语言都靠不住。随着时代的进步,很多语言跟不上开发的要求。从面向过程到面向对象,与其说是思想的进步,不如说是为了适应高速开发。除了底层汇编语言,还有那些能适应高速开发的语言。每种语言都是很有趣的。 ... [详细]
  • 本文详细介绍了如何创建和使用VUE uni-app开发环境,包括通过HBuilderX可视化界面和通过vue-cli命令执行的方法。文章内容简单清晰,易于学习与理解。通过学习本文,读者可以深入了解VUE uni-app开发环境,并通过实践验证掌握具体的使用情况。编程笔记将为读者推送更多相关知识点的文章,欢迎关注! ... [详细]
  • 本文介绍了一个从入门到高手的VB.NET源代码,通过学习这些源代码,可以在21天内成为VB.NET高手。文章提供了下载地址,并提醒读者加入作者的QQ群和收藏作者的博客。 ... [详细]
author-avatar
手机用户2602936771
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有