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

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

3天内不再提示

STM32F4描述系统和电源复位的原因

科技绿洲 来源:STM32 作者:STM32 2023-06-22 09:04 次阅读

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

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

嵌入式专栏

1

STM32复位介绍

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

1. 系统复位

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

产生系统复位事件:

NRST 引脚低电平

窗口看门狗计数结束

独立看门狗计数结束

软件复位

低功耗管理复位

2. 电源复位

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

产生电源复位条件:

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

在退出待机模式时

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

3. 复位电路简图


poYBAGSNeByAdQTgAACqQM5U_2E662.png

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

嵌入式专栏

2

STM32 内核和系统复位

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

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


poYBAGSNeBSANfe8AAJr_3ZM3ZY890.png

1. 内核复位

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

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

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

void NVIC_CoreReset(void)

2. 系统复位

软件复位中的系统复位操作的寄存器位(SYSRESETREQ)不同,复位的对象为整个芯片(除后备区域)。

系统复位函数:

void NVIC_SysReset(void)

嵌入式专栏

3

STM32 复位来源

为了方便软件工程师调试和查找(复位)问题,STM32设计有个状态寄存器保存了各种复位来源的状态。

如下图所示(具体请查阅参考手册):


pYYBAGSNeASAXGUQAAtLYLj2NB4360.png

4

STM32 引起异常复位的原因

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

原因一:NRST引脚电平被拉低引起复位

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

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

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

原因二:欠压引起复位

有些产品在设计之初没有综合计算负载(与STM32同电源),因负载过大,使其欠压,从而导致复位。

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

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

原因三:数字、模拟电源地压差引起复位

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

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

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

原因四:看门狗超时喂狗引起复位

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

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

解决办法:进入睡眠之前设置更长的喂狗时间,同时不定期唤醒芯片进行喂狗。
责任编辑:彭菁

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

    关注

    449

    文章

    48589

    浏览量

    413099
  • STM32
    +关注

    关注

    2249

    文章

    10727

    浏览量

    350331
  • 隔离电源
    +关注

    关注

    6

    文章

    251

    浏览量

    36032
收藏 人收藏

    评论

    相关推荐

    基于Cortex-M4的STM32F4复位序列

    初次接触到STM32F7,可能会有个疑惑,为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处开始执行吗?如果是,那这似乎看起来是冲突的。实际上,STM32
    的头像 发表于 02-16 06:14 4797次阅读
    基于Cortex-M4的<b class='flag-5'>STM32F4</b>的<b class='flag-5'>复位</b>序列

    STM32F4STM32F7的复位序列介绍

    内核,而Cortex-M7和Cortex-M3/M4复位序列有些不一样。本文中,将针对这个问题做详细讲解。 STM32F4复位序列 STM32F
    发表于 04-08 07:05

    STM32F7与STM32F4复位序列之比较

    7是基于Cortex-M7内核,而Cortex-M7和Cortex-M3/M4复位序列有些不一样。本文中,将针对这个问题做详细讲解。STM32F4复位序列
    发表于 05-31 14:17

    关于自制STM32F4的数据采集系统

    小弟项目中需要应用STM32F4自己设计一个数据采集系统,电路部分已设计完成,PCB已加工出来了,上电电源也没有任何问题,可是当下载程序测试时,使用的是ST-Link,显示No Target Linked,,,不知怎么回事?当连
    发表于 07-19 14:42

    STM32F7与STM32F4复位序列有什么区别

    Cortex-M7和Cortex-M3/M4复位序列有些不一样。那么STM32F7与STM32F4复位序列有什么区别了?
    发表于 03-05 07:06

    STM32F4时钟初始化配置

    00. 目录文章目录00. 目录01. STM32F4时钟系统概述02. STM32F4时钟系统图03. STM32F4时钟初始化配置04.
    发表于 07-23 06:53

    STM32F4复位电路增加了MAX809低电平复位芯片

    之前项目在设计之初,在STM32F4复位电路增加了MAX809低电平复位芯片(图1)。在样板焊接成功,调试时发现单片机复位引脚一直为低电平,移除MAX809后正常。具体
    发表于 08-02 06:58

    STM32F4外部中断简介

    STM32F4外部中断简介 STM32F4的IO口在第六章有详细介绍,而中断管理分组管理在前面也有详细的阐述。这里我们将介绍STM32F4外部IO口的中断功能,通过中断的代码主要分布在固件库
    发表于 08-04 08:56

    STM32F4时钟系统的知识

    STM32F4时钟系统的知识在《STM32F4中文参考手册》第六章复位和时钟控制章节有非常详细的讲解,网上关于时钟系统的讲解也有很多,讲不出
    发表于 08-13 08:11

    STM32F4外部中断简介

    STM32F4外部中断简介STM32F4的IO口在第六章有详细介绍,而中断管理分组管理在前面也有详细的阐述。这里我们将介绍STM32F4外部IO口的中断功能,通过中断的代码主要分布在固件库
    发表于 08-13 07:33

    STM32F4的外部中断简介

    目录一、STM32F4的外部中断1. STM32F4的外部中断个数2. STM32F4中供IO口使用的外部中断一、STM32F4的外部中断1. ST
    发表于 08-16 07:38

    stm32f4非debug模式程序无法运行是什么原因

    stm32f4的启动方式分为哪几种呢?stm32f4非debug模式程序无法运行是什么原因?如何解决?
    发表于 01-20 06:43

    STM32F7与STM32F4复位序列比较

    STM32F7与STM32F4复位序列比较
    发表于 12-08 11:52 0次下载

    STM32F4复位序列对比STM32F7的复位序列

    STM32F4基于Cortex-M4。对于基于Cortex-M3/M4的芯片,复位后总是从0x00000000地址处,取主堆栈指针(MSP)的值,从0x00000004处,取出PC的初始值(这个值是复位向量),然后从这个值对应的
    的头像 发表于 01-18 16:44 2849次阅读

    STM32STM32F4时钟系统

    00. 目录文章目录00. 目录01. STM32F4时钟系统概述02. STM32F4时钟系统图03. STM32F4时钟初始化配置04.
    发表于 11-25 20:06 46次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32F4</b>时钟<b class='flag-5'>系统</b>