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)内核复位与系统复位区别及应用
有一种修饰符能使变量在处理器复位而不被初始化

最后
微信搜索“embedddeveloper” 或者扫描下面二维码、关注,在我的底部菜单查看更多精彩内容!
长按识别二维码 关注
原文标题:一篇很简单,有必要了解的文章 - stm32复位来源(寄存器版)
文章出处:【微信公众号:strongerhuang】欢迎添加关注!文章转载请注明出处。

中芯国际可能研发出14nm工艺 台媒:三星在坏中芯国际的好事
为什么使用spring-authorization-server?
点成动态丨 2023中国(南京)国际科教技术及装备博览会(CESEE)精彩回顾
电子线对我们有着非常巨大的实际性价值
当3D打印应用在无人机有何不同?
STM32复位来源(寄存器版)
美国防部禁令对电池民间商业合作没有影响
有必要全面提升BINDDNS服务器的安全性能
EMC指令如何而来
NVR平台刚性需求与弹性需求
基于FPGA的磁浮轴承控制系统研究
安士佳携手亿智电子共同推动AI芯片在万物智联领域的应用
福布斯中国发布最佳CEO排名 比亚迪王传福和宁德时代曾毓群上榜
IFA2019,将有哪些趋势性的技术亮点呈现?
设备拆卸的基本原则及常用方法
Borosil推出了一种名为“ Suraksha”的UV-C消毒设备
腾讯加速推进IPv6,QQ、微信即将完成IPv6技术升级
兆瀚×金融 | 长沙银行科技+,一场数字转型的蓄势“狂飙”
火灾传感器如何保证工作人员的安全
基于语音识别技术用于录音应用