STM32复位来源(寄存器版)

发布者:快乐的小鸟最新更新时间:2024-08-05 来源: elecfans关键字:STM32  复位  寄存器 手机看文章 扫描二维码
随时随地手机看文章

最近项目遇到了一个问题:一个子系统,具有IAP升级的功能,Bootloader位于0x08000000,也就是说系统在运行过程允许复位。但是,该子系统需要在上电的过程中处理某项任务(而且只需要上电的那一次)。


问题来了:我们如何判断系统是第一次上电复位?

解决的办法有很多种,但是最简单的办法就是获取系统复位来源,详情请看文章。

其实,这篇文章的内容也能回答之前一位网友的问题,不知你会不会阅读本文。

RCC复位和时钟控制

RCC:Reset and Clock Control

相信大家都知道RCC是什么,主要就是讲述复位和时钟的章节。先来讲述一下复位种类。

STM32的复位大概分为三类:系统复位、电源复位和后备域复位。

系统复位:

1. NRST引脚上的低电平(外部复位)

2. 窗口看门狗计数终止(WWDG复位)

3. 独立看门狗计数终止(IWDG复位)

4. 软件复位(SW复位)

5. 低功耗管理复位

电源复位:

1. 上电/掉电复位(POR/PDR复位)

2. 从待机模式中返回

备份区域复位:

1. 软件复位,备份区域复位可由设置备份域控制寄存器(RCC_BDCR)中的BDRST位产生。

2. 在VDD和VBAT两者掉电的前提下, VDD或VBAT上电将引发备份区域复位。

RCC_CSR

CSR:Control/Status Register,即控制/状态寄存器。

在STM32种,RCC的寄存器和功能因芯片的不同而不同,但RCC_CSR寄存器是众多STM32种都具有的一个。

这个寄存器就会记录各种复位的状态,我们只需要读取这个寄存器即可知道是什么样子引起的复位。

源代码实例

上面说了那么多,其实大家都容易理解,但只有真正实测过源代码,才能真正起到掌握的作用。

为了方便某些懒惰的朋友,我将提供测试源代码,方便大家学习和掌握。

本文源代码给予前面文章【CM3内核复位与系统复位区别及应用】提供的源代码的基础上修改而来。

现在主要看下测试源代码和测试效果:

各种情况打印结果:

1.上电复位打印信息

CSR = C000000

5.POR/PDR reset

6.PIN reset

Demo...

Demo...

2.按键(PIN)复位打印信息

CSR = 4000000

6.PIN reset

Demo...

Demo...

3.内核复位 NVIC_CoreReset();打印信息

CSR = 0

Demo...

Demo...

4.系统复位 NVIC_SysReset();打印信息

CSR = 14000000

4.Software reset

6.PIN reset

Demo...

Demo...

到了这一步,相信大家基本明白了。但是,还有值得进一步分析的地方,这里我算是给大家安排的作业(只有愿意动脑思考的人,才会有进步)。

为了方便大家学习,我将源代码提供给大家下载(虽只有STM32F1,但其他系列类似)。

STM32F103ZE(Keil)_复位来源(寄存器版):

http://pan.baidu.com/s/1hskScba

推荐阅读:

CM3(STM32)内核复位与系统复位区别及应用

有一种修饰符能使变量在处理器复位而不被初始化


关键字:STM32  复位  寄存器 引用地址:STM32复位来源(寄存器版)

上一篇:STM32CubeMx入门教程(4):PWM应用
下一篇:STM32单片机的调试方式 STM32单片机的启动流程详解

推荐阅读最新更新时间:2026-03-25 06:06

stm32复位电路电阻和电容怎么搭配
搭配STM32复位电路的电阻和电容需要考虑多个因素,包括复位脉冲的宽度、电源稳定时间、电源噪声抑制等。在本文中,我将详细介绍如何搭配电阻和电容来设计STM32复位电路,确保其正常工作和稳定性。 复位电路的作用和基本原理 STM32复位电路是一种用于重新启动系统的电路,当系统出现错误或故障时,通过产生一个短暂的复位脉冲信号来重新初始化系统的状态。该复位脉冲信号会将系统的所有寄存器设置为初始状态,以确保系统从一个已知的可控状态重新启动。 复位电路的基本原理是利用电源稳定时间的不稳定性来产生一个短暂的复位脉冲信号。当电源电压上升到足够高的电压,复位电路的电容开始充电,当电容充电到足够高的电压时,复位电路的电压高于STM32芯片的复位
[单片机]
STM32三种复位形式
STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。 一、系统复位 系统复位将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,产生一个系统复位: NRST引脚上的低电平(外部复位) 窗口看门狗计数终止(WWDG复位) 独立看门狗计数终止(IWDG复位) 软件复位(SW复位) 低功耗管理复位 可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。 软件复位通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。请参考Cortex™-M3技术参考手册获得进一步信息。低功耗管理复位在以下两种情况下可产生低功耗管理复位: 在进入待机
[单片机]
<font color='red'>STM32</font>三种<font color='red'>复位</font>形式
STM32芯片的那些系统级复位功能
我们知道,STM32芯片里有很多系统级的复位,比方上电复位、欠压复位、看门狗复位、软件复位、复位脚电平触发复位等等。这些系统级的复位往往都是针对整个芯片或芯片的绝大部分区域。 其实,我们在实际应用中有时候可能并不需要、甚至不接受总是对整个芯片做大面积的复位。正因为如此,STM32的芯片里除了具备那些系统级复位功能外,还针对各个外设设计了复位功能,即我们可以只需针对某特定外设或特定区域做复位而不影响其它。特定区域一般是指某一块总线驱动的外设集,比方挂在APB1总线的所有外设。 或许有人不了解、或者说没有使用过针对特定外设复位的功能,这里就简单介绍下,抛砖引玉。在STM32各个系列的参考手册里的RCC章节,有关于对外设或局部外
[单片机]
<font color='red'>STM32</font>芯片的那些系统级<font color='red'>复位</font>功能
STM32看门狗和复位IC同时存在的注意事项
前不久有朋友大概问了这么一个问题:博主,在复杂的环境下,干扰有点大,有必要外接一个复位IC吗? 1写在前面 我们都知道在复杂环境,比如一些工厂,特别是在有大型机电设备的环境下,我们的电源信号、通信信号都有可能受到干扰。 那么,在这种情况下,我们软件和硬件都有必要做一定预防处理。 除了需要外接复位IC,同时,为了系统能稳定长期的工作,我们可能还有必要添加看门狗。 本文就围绕复位IC、看门狗展开相关内容的讲解。 2 MCU电路为什么要使用复位芯片? STM32都有一个最低工作电压(比如1.8V),当电源电压跌落到低于MCU所要求的最低值时,MCU工作可能发生混乱,造成程序跑飞,引起整机死机、误动作等现
[单片机]
<font color='red'>STM32</font>看门狗和<font color='red'>复位</font>IC同时存在的注意事项
CM3(STM32)内核复位与系统复位区别及应用
Ⅰ、写在前面 某些系统允许复位,但对外设又有特殊要求:某一个IO状态不能因为复位而改变,某一个定时器计数器不能改变等。 例子:我一个A系统通过一个IO控制另一个B系统的电源,而这个IO置高时才开启B系统的电源。 正常工作过程中,B系统只有收到A系统关机命令任务才会进行关机(也就是说不能掉电关机),而A系统在工作过程中有复位的需求。 这个时候如果我使用常规的引脚复位,就会使IO置低,不符合要求,就需要使用到本文说到的内核复位。 Ⅱ、关于复位 说到复位,我们都不会陌生,学习时,开发板上基本都有一个复位按键。 复位的种类有很多:上电复位、掉电复位、复位引脚复位、看门狗复位、软件复位等。 上面说的复位按键,也就
[单片机]
STM32 GPIO操作深度解析:HAL库中的GPIO初始化艺术——不仅仅是配置寄存器的故事
???? 前言 你是不是也曾经天真地以为,控制几个LED灯只需要随便写两行代码?是不是觉得GPIO初始化不过是设置几个寄存器的小把戏?当你的按键检测出现抖动、LED莫名闪烁、通信接口罢工时,你是否怀疑过自己根本没真正理解GPIO?今天,就让我们把STM32的GPIO外衣一层层剥开,看看这个看似简单的功能模块背后藏着多少工程师的智慧结晶! 1. GPIO——被低估的硬件桥梁 GPIO(General Purpose Input/Output)是MCU与外部世界交互的物理接口。在STM32中,每个GPIO引脚都包含7个寄存器控制其行为: 4个32位配置寄存器(MODER, OTYPER, OSPEEDR, PUPDR) 2个3
[单片机]
<font color='red'>STM32</font> GPIO操作深度解析:HAL库中的GPIO初始化艺术——不仅仅是配置<font color='red'>寄存器</font>的故事
STM32】DMA基本原理、寄存器、库函数
DMA的基本介绍 1DMA的基本定义 DMA,全称Direct Memory Access,即直接存储器访问。 DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实现和完成的。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高。 2DMA的主要特征 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置; 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设
[单片机]
STM32单片机GPIO寄存器的功能解析
1、GPIO的寄存器按照功能可以分为以下几类: A、配置寄存器 B、数据寄存器 C、位寄存器 D、锁定寄存器 2、对于GPIO端口,每个端口有16个引脚,每个引脚的模式由寄存器的四个位控制,每四位又分为两位控制引脚配置(CNFy[1:0]),两位控制引脚的模式及最高速度(MODEy[1:0]),其中y表示第y个引脚。配置GPIO引脚模式的一共有两个寄存器,CRH是高寄存器,用来配置高8位引脚,还有CRL配置低八位引脚。 3、端口位设置清除寄存器(GPIOx_BSRR) 一个引脚y的输出数据由GPIOx_BSRR寄存器位的2个位来控制分别为BRy (Bit Reset y)和BSy (Bit Set y),BRy位用于写1清零,
[单片机]
<font color='red'>STM32</font>单片机GPIO<font color='red'>寄存器</font>的功能解析
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved