继续看硬件设计
上电复位(POR)/ 掉电复位(PDR)
- 芯片内部集成 POR/PDR 电路,VDD 到 2V 起即可正常启动。
- VDD 低于设定阈值 VPOR/PDR 期间,器件一直处于复位模式,不需要外部复位电路。
- 上下电复位阈值的具体数值,查低密度、中密度、高密度、XL密度和互联型 STM32F10xxx 数据手册的电气特性章节。

上图的意思是,上电的时候,VCC<VPDR+tRSTTEMPO时系统处于复位状态,下电时VCC<VPDR时系统也处于复位状态,这个和其他的器件不同,类似FPGA或者其他SOC,都要上电完成复位一段时间才行,所以STM32的复位引脚不接外部复位电路也是可以正常工作的。
可编程电压检测器(PVD)
PVD 监控 VDD,与电源控制寄存器(PWR_CR)中 PLS2:0 位选定的阈值比较。
置位 PVDE 位使能 PVD。
电源控制/状态寄存器(PWR_CSR)中 PVDO 标志位指示 VDD 高于还是低于 PVD 阈值。
该事件内部接到 EXTI Line16,经 EXTI 寄存器使能后可产生中断。
VDD 跌破 PVD 阈值时产生中断,或 VDD 回升超过阈值时产生中断,取决于 EXTI Line16 的上升沿/下降沿配置。
例:中断服务程序里做紧急关断动作。

可以做掉电保存数据,或者电池产品防拆的功能等。
系统复位
系统复位把全部寄存器置为复位值。例外是时钟控制器 CSR 寄存器中的复位标志,以及备份域中的寄存器(见图 1)。
出现下列任一事件,产生一次系统复位:
1,NRST 引脚低电平(外部复位)
2,窗口看门狗计数结束条件(WWDG 复位)
3,独立看门狗计数结束条件(IWDG 复位)
4,软件复位(SW 复位)
5,低功耗管理复位
复位源查控制/状态寄存器 RCC_CSR 中的复位标志即可确定。
STM32F1xx 上电不需要外部复位电路。建议只加一颗下拉电容,提升 EMS 性能,保护器件不被寄生复位。见图 5。
下拉电容通过内部电阻充放电,会增加器件功耗。推荐容值 100nF 可以降到 10nF,以此限制这部分功耗。

时钟
驱动系统时钟(SYSCLK)的时钟源有三个:
- HSI 振荡器时钟(高速内部时钟信号)
- HSE 振荡器时钟(高速外部时钟信号)
- PLL 时钟
器件另有两个次级时钟源:
- 40kHz 低速内部 RC(LSI RC),驱动独立看门狗,也可选驱动 RTC,用于停机/待机模式的自动唤醒。
- 32.768kHz 低速外部晶振(LSE 晶振),可选驱动实时时钟(RTCCLK)。
不用的时钟源可以各自单独开关,用来优化功耗。
时钟树的描述见参考手册:
- RM0008,对应 STM32F101xx、STM32F102xx、STM32F103xx、STM32F105xx/107xx
- RM0041,对应 STM32F100xx 超值系列
HSE 振荡器时钟
高速外部时钟信号(HSE)可以由两种源产生:
- HSE 外部晶振/陶瓷谐振器(见图 7)
- HSE 用户外部时钟(见图 6)

1,REXT 取值取决于晶体特性。典型值 5 到 6 倍 RS(谐振器串联电阻)。个人理解就是调节晶振振动幅值,通过REXT电阻限制驱动功率的作用。
2,负载电容 CL 按下面式子算:CL = CL1 x CL2 /(CL1 + CL2)+ Cstray。Cstray 是引脚电容加 PCB 板或走线相关电容,典型 2 到 7pF。压小这个值的方法见第 6 节。
外部时钟源(HSE 旁路)
这个模式下必须外部提供时钟源。频率上限:
- STM32F100xx 超值系列 24MHz
- STM32F101xx、STM32F102xx、STM32F103xx 25MHz
- 互联型 50MHz
外部时钟信号(方波、正弦、三角波),占空比约 50%,接 OSC_IN 引脚。OSC_OUT 引脚悬空,保持高阻(见图 7、图 6)。
外部晶振/陶瓷谐振器(HSE 晶振)
外部振荡器频率范围:
- STM32F101xx、STM32F102xx、STM32F103xx 4 到 16MHz
- STM32F100xx 超值系列 4 到 24MHz
- 互联型 3 到 25MHz
外部振荡器主时钟频率准。硬件配置见图 7。
谐振器和负载电容尽量靠近振荡器引脚接,压缩输出失真和起振稳定时间。负载电容值按所选振荡器调整。
CL1 和 CL2 建议用高频用高质量陶瓷电容,5pF 到 25pF(典型),按晶振或谐振器的要求选。CL1 和 CL2 一般取相同值。晶振厂家标的负载电容,是 CL1 与 CL2 的串联组合。算 CL1 和 CL2 时要把 PCB 与 MCU 引脚电容算进去,引脚加板子电容合计可用 10pF 粗估。
细节看数据手册的电气特性章节。
LSE 振荡器时钟
低速外部时钟信号(LSE)可由两种源产生:
- LSE 外部晶振/陶瓷谐振器(见图 9)
- LSE 用户外部时钟(见图 8)

注:
1,"External clock"图:CL1 与 CL2 上限 15pF,别超。强烈建议选负载电容 CL 不大于 7pF 的谐振器。负载电容 12.5pF 的谐振器不能用。
2,"External clock"与"crystal/ceramic resonators"图:OSC32_IN 与 OSC_OUT 引脚也能当 GPIO 用。同一个应用里不建议既当 RTC 引脚又当 GPIO 用。
3,"Crystal/ceramic resonators"图:REXT 取值看晶体特性。0 欧电阻能用,但不是最优。典型值 5 到 6 倍 RS(谐振器串联电阻)。要细调 RS,见 AN2867,ST 单片机振荡器设计指南。
外部时钟源(LSE 旁路)
外部提供时钟源。频率上限 1MHz。外部时钟信号为方波、正弦波或三角波。占空比约 50%。接 OSC32_IN 引脚。OSC32_OUT 引脚悬空,保持高阻。见图 9、图 8。
外部晶振/陶瓷谐振器(LSE 晶振)
LSE 晶振是 32.768kHz 低速外部晶振或陶瓷谐振器。给实时时钟外设(RTC)提供低功耗、高精度时钟源。用于时钟/日历或其他计时功能。
谐振器和负载电容尽量靠近振荡器引脚接。压缩输出失真和起振稳定时间。负载电容值按所选振荡器调整。
时钟安全系统(CSS)
时钟安全系统由软件开启。开启后,时钟检测在 HSE 起振延时之后生效,HSE 停振时关闭。
- HSE 时钟检测到失效,振荡器自动关闭。失效事件送到 TIM1 高级控制定时器的 break 输入,同时产生中断通知软件(时钟安全系统中断 CSSI),让 MCU 做抢救动作。CSSI 挂在 Cortex-M3 的 NMI(不可屏蔽中断)异常向量上。
- HSE 直接或间接作为系统时钟时(间接指 HSE 作 PLL 输入,PLL 时钟作系统时钟),检测到失效会切到 HSI,并关闭外部 HSE。失效发生时如果 HSE 时钟(分频或不分频)正是用做系统时钟的 PLL 输入,PLL 也一起关闭。
细节见 STM32F10xxx(RM0008)和 STM32F100xx(RM0041)参考手册,ST 官网 www.st.com。