stm32复习总结

stm32低功耗停止模式,关闭了1.8区域时钟,关闭了HSI和HSE时钟,通过外部中断唤醒,外部中断不需要这些配置吗,1.8v区域时钟和HSI,HSE时钟吗?

在 STM32 的 Stop 模式下,即使关闭了 1.8V 区域的时钟、关闭了 HSI 和 HSE,外部中断(EXTI)仍然可以正常唤醒芯片。

不需要 HSI、HSE 和完整的 1.8V 区域时钟来检测外部边沿并产生唤醒。1. Stop 模式到底关了什么?进入 Stop 模式后:

  • 1.8V 内核区域的所有时钟都被停止
  • HSI、HSE、PLL 全部关闭
  • 大部分外设停止工作
  • 但 SRAM 和寄存器内容保留
  • GPIO 状态保持
  • 电压调节器可工作在正常模式或低功耗模式
  1. 为什么 EXTI 还能唤醒?关键点在于:EXTI 的边沿检测电路是异步的。
  • EXTI 有专门的异步唤醒路径
  • 它不依赖系统主时钟(HSI/HSE/PLL)
  • 也不需要 1.8V 区域的完整时钟树在运行
  • 只要对应的 GPIO 引脚和 EXTI 线配置正确,外部信号的边沿就能被检测到,并产生唤醒请求

这就是为什么官方文档明确说:

Stop 模式可以通过任意配置好的 EXTI 线(外部中断或事件)唤醒。

  1. 唤醒后的时钟情况唤醒后系统会自动发生以下变化:

  2. 芯片退出 Stop 模式

  3. 默认使用 HSI 作为系统时钟(频率较低,通常 8MHz 或 16MHz)

  4. 然后才会进入你配置的 EXTI 中断服务函数

  5. 中断返回后,从进入 Stop 的那条指令后面继续执行

因此,唤醒后必须重新配置系统时钟(如果之前用的是 HSE + PLL 等高频时钟),否则外设时序会出错。典型做法:c

复制代码
// 进入 Stop 前
HAL_SuspendTick();   // 可选,关掉 SysTick
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

// 唤醒后(在中断回调或返回后立刻执行)
SystemClock_Config();  // 重新配置 HSE/PLL 等
HAL_ResumeTick();
  1. 需要提前配置好的内容虽然不需要时钟,但以下配置必须在进入 Stop 之前完成:
必须配置的项目 说明
GPIO 模式 配置为外部中断模式(上升沿/下降沿/双边沿)
EXTI 线映射 正确映射到对应引脚
EXTI 触发方式 RTSR / FTSR 配置好
中断屏蔽 EXTI_IMR 对应位置 1(允许中断)
NVIC 使能对应的 EXTI 中断通道
清除挂起标志 进入前清除 EXTI_PR 和相关唤醒标志
  1. 和其他唤醒源的对比
唤醒源 是否需要 HSI/HSE 是否需要 1.8V 时钟 说明
EXTI 外部中断 不需要 不需要 异步边沿检测
RTC 闹钟/唤醒 不需要(用 LSE/LSI) 不需要 备份域时钟
普通外设中断(定时器、UART等) 需要 需要 通常无法唤醒 Stop
LPUART(部分系列) 可用 LSE 特殊支持 低功耗串口可唤醒

总结

  • Stop 模式下关闭 1.8V 区域时钟、关闭 HSI/HSE 不影响 EXTI 外部中断唤醒。
  • EXTI 使用的是异步检测电路,专门为低功耗唤醒设计。
  • 唤醒后系统默认跑在 HSI 上,需要软件重新配置时钟。
  • 进入 Stop 前必须正确配置好 GPIO + EXTI + NVIC。
相关推荐
威嵌神州1 天前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
Zw-awa1 天前
MPU6050:从原始加速度到姿态变化
stm32
少司府1 天前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
shimly1234561 天前
(done) 嵌入式硬件电路图 (8) 获取芯片手册信息
嵌入式硬件
Zwawa2 天前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
c语言·单片机·嵌入式
简单电磁炮2 天前
FWD八位单片机调试问题
单片机·嵌入式硬件
shimly1234562 天前
(done) 嵌入式硬件电路图 (6) 重要的元器件特性之MOS管
嵌入式硬件
菥蓂寻生2 天前
STM32移植到GD32中以105为例
stm32·单片机·嵌入式硬件
Zw-awa2 天前
让屏幕动起来:OLED动画效果,丝滑光标、帧动画和一只贪吃蛇
stm32
橘为己有4412 天前
51单片机:定时/计数器
单片机·51单片机