STM32复位来源 以及系统和内核复位区别

最近有朋友问了些关于stm32复位的问题,今天结合前面文章再次总结一下复位相关知识。
1stm32的复位和时钟控制
rcc:reset and clock control
每一块stm32中都有这么一个rcc复位和时钟控制模块。
stm32的复位为三类:系统复位、电源复位和后备域复位。
系统复位:
1. nrst引脚上的低电平(外部复位)
2. 窗口看门狗计数终止(wwdg复位)
3. 独立看门狗计数终止(iwdg复位)
4. 软件复位(sw复位)
5. 低功耗管理复位
电源复位:
1. 上电/掉电复位(por/pdr复位)
2. 从待机模式中返回
备份区域复位:
1. 软件复位,备份区域复位可由设置备份域控制寄存器(rcc_bdcr)中的bdrst位产生。
2. 在vdd和vbat两者掉电的前提下, vdd或vbat上电将引发备份区域复位。
2stm32的复位来源
在很多应用中,都会判断是什么引起的复位。
比如:判断为看门狗引起的复位,我们进行xxx操作。软件引起的复位,我们又执行xxx操作。
在stm32rcc模块中,有这么一个寄存器:控制/状态寄存器 (rcc_csr):
这个寄存器就会记录各种复位的状态,我们直接读取这个寄存器(库函数有读寄存器接口)就能知道是什么引起的复位。
3stm32的复位来源例程
之前我提供了一个简单demo,stm32f103ze(keil)_复位来源(寄存器版):
http://pan.baidu.com/s/1hskscba
4stm32系统和内核复位
内核复位:它会使stm32内核(cortex-m)进行复位,而不会影响其外设,如gpio、tim、usart、spi等这些寄存器的复位。
系统复位:这个复位会使整个芯片的所有电路都进行复位,系统默认的函数接口nvic_systemreset就是系统复位(位于core_cm*.h)。
1.nvic_corereset内核复位
cm3 允许由软件触发复位序列,用于特殊的调试或维护目的。在cm3中,有两种方法可以执行自我复位。第一种方法,是通过置位 nvic 中应用程序中断与复位控制寄存器(aircr)的vectreset 位(位偏移:0)。
这种复位的作用范围覆盖了整个cm3处理器中,除了调试逻辑之外的所有角落,但是它不会影响到 cm3 处理器外部的任何电路,所以单片机上的各片上外设和其它电路都不受影响。
c语言版函数:
void nvic_corereset(void){__dsb(); //置位vectreset scb->aircr = ((0x5fa aircr = ((0x5fa 汇编版函数:
__asm void nvic_sysreset_a(void){ ldr r0, =0xe000ed0c ldr r1, =0x05fa0004 str r1, [r0] deadloop_sys b deadloop_sys}
内核复位与系统源代码和相近,差异在于sysresetreq和sysresetreq这两位。
关于复位的知识,在实际项目中应用的比较多。

用DS39xx CCFL控制器实现模拟调光
40个Nginx常问面试题
华为云大数据BI,企业数字化运营得力助手
新的热量模型可以帮助医疗电子设备持续更长时间
不同的通信系统有什么不同
STM32复位来源 以及系统和内核复位区别
!销售/回收E3633A电源E3633A小兵/孟S13825
新一代徕卡双摄+多种配色,逆天神机华为P10
6388元的第一款双摄iPhone7 Plus,光学防抖+防水防尘!
专用IC解密技术AVR应用技巧
小米6真机曝光:玫瑰金配色双摄超声波指纹
探索宇宙的重大突破?人工智能代替人类进行宇宙探索
移动安全“芯”方案丨芯盾时代入选GoUpSec《移动安全产品及服务购买决策参考》
向“高”而行 聚势破圈:中国(苏州)世界光子产业发展大会5月底在苏州开幕
RTT是什么?对TCP中RTT时延的理解
懒惰强化学习算法在发电调控REG框架的应用
深度敏感拉曼光谱在啮齿动物皮肤创伤评估中的应用
诚邀报名|与你同行——开源教育晨雾中的早行者
“三遥”遥测、遥控、遥信的智能环网柜设计解决方案
SC1281可用于卫星机顶盒,采样频率10Msps~3Gsps