STM32复位来源(寄存器版)

发布时间:2024-08-05  

最近项目遇到了一个问题:一个子系统,具有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)内核复位与系统复位区别及应用

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    相对应 ALE和PSEN为逻辑低电平。 退出掉电保护方式的方法只有一个:硬件复位复位后特殊功能寄存器的内容被初始化,但RAM的内容仍然保持不变。 编程和校验方式 编程:是指......
    面这种用户模式下,实际是从 Flash 区的 0x0800_0000,0x0800_0004 获取的。 我们可以通过调试器观察一下芯片复位后 M0 内核的寄存器: 细心的同学这时可能发现了一个问题。 堆栈......
    8051单片机有哪些复位方法;问题:8051单片机复位后,各寄存器的初始状态如何?复位方法有几种? 解答:8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器......
    ,需把这些寄存器的内容保护起来,即保护现场。 Ø堆栈的设置:MCS—51系列单片机的堆栈通常设置在内部RAM的30H~7FH之间。 Ø堆栈指示器SP:SP为8位寄存器,用于......
    图5 复位寄存器的内容2 从图示注释中,我们可以看到用户在软件中可以对这些RCON寄存器位置位1,但是这不会导致器件复位。 二.复位和中断的关系 图6 默认中断的复位 在XC16编译......
    )。   1:单片机复位后,程序计数器(PC)的内容为 0000H,从 flash的0000H 单元开始执行程序。【PC是一个16位的计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC......
    成。 3.2  读取温度值   当LPC2148要读取ADT75各寄存器的内容时,都需要经过先写入再读取的步骤。在写ADT75时,需由地址指针寄存器指出将读取的寄存器地址。图3描述了读取ADT75温度......
    向量),然后从这个值对应的地址处取指。 这两个值,就是中断向量表里的第一个和第二个表项的值。 在Cortex-M3/M4里,复位后默认中断向量表在0地址开始的位置。之后,可以通过修改VTOR寄存器的......
    向量),然后从这个值对应的地址处取指。 这两个值,就是中断向量表里的第一个和第二个表项的值。 在Cortex-M3/M4里,复位后默认中断向量表在0地址开始的位置。之后,可以通过修改VTOR寄存器的......
    从这个值对应的地址处取指。 这两个值,就是中断向量表里的第一个和第二个表项的值。 在Cortex-M3/M4里,复位后默认中断向量表在0地址开始的位置。之后,可以通过修改VTOR寄存器的值,重定位中断向量表。在IAP......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>