一 时钟
STM32为了降低功耗,实现了比较复杂的时钟系统。在需要使用某个外设,需要启动时钟,也可以为了降低功耗,将一些时钟关闭。
时钟树
如下图,标记了红色,橙色和蓝色
红色:
为时钟的4个时钟源(HES)(HSI)(LSE)(LSI),stm32中有高速,低速两个时钟,可以外接高低两个时钟,高速外部时钟,可以接3-25MHZ振荡器,而往往接的是8mhz的。4个时钟都可以根据需要关闭或者开启。
橙色:
二级时钟,是4个时钟源进行分频或者倍频得到的时钟源。其中的:
系统时钟(SYSCLK):用来提供给内核,最大72MHZ,往往设置的就是72MHZ,大于72就超频了。同时也提供给外设时钟,但外设频率远跟不上内核的频率,所以要经过分屏,提供给各个外设。系统时钟由3个时钟源获得,分别是外部高速时钟HSE,内部高速时钟HSI,以及PLLCLK。
PLLCLK:用来提供给USB,当需要使用USB时候,就必须使能PLLCLK。同时也可以提供给系统时钟。PLLCLK由HSE和HSI进行分频后得到。
蓝色
蓝色是一些外设,如看门狗,RTC,APB1,APB2等
独立看门狗:只能挂在低速内部时钟上,使用看门狗就需要HSI使能
RTC: 可以由内部低速,外部低速或者外部高速128分频得到。
APB1和APB2由系统时钟提供,APB1最大36MHZ,APB2最大72MHZ,可以通过系统时钟分频得到。
MCO:可以通过MCO接口将HSE,HSI,系统时钟,PLL等时钟输出到外部,给外部芯片等提供时钟频率。
二 复位
复位分位三种,系统复位,电源复位,备份域复位
备份域复位
备份域由低速外部振荡器 ,实时时钟,备份SRAM ,RTC备份寄存器等构成,用来在掉电时候,通过外部的纽扣电池供电,保存一些必要的数据。
备份域复位也只复位,备份域中的寄存器,而对外界没有影响。
引起备份域复位的方式有:
(1)软件复位;
备份域控制寄存器 (RCC_BDCR) 中的 BDRST 位置 1 触发复位。
(2)电源VDD和VBAT都已经掉电后,再上电任意一个。
系统复位
系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器。也就是包括CM3内核和外设的寄存器复位。
当以下事件中的一件发生时,产生一个系统复位:
- NRST管脚上的低电平(外部复位)
- 窗口看门狗计数终止(WWDG复位)
- 独立看门狗计数终止(IWDG复位)
- 软件复位(SW复位)
- 低功耗管理复位
电源复位
除了备份域内的寄存器以外,电源复位会将其它全部寄存器复位成默认的复位值。也就是直接关掉电源,会将时钟控制寄存器数据丢失。
当以下事件中之一发生时,产生电源复位:
- 上电/掉电复位(POR/PDR复位)
- 从待机模式中返回