PWR简介

PWR前置

  • 模拟电路供电 引脚:VDDA(正极) VSSA(负极) 区域:A/D转换器 温度传感器 复位模块 PLL锁相环

  • AD转换器参考电压供电引脚:Vref+与Vref- 内部已经接到 VDDA与VSSA

  • 数字电路供电 引脚:VDD GND 区域:I/O电路 待机电路(唤醒逻辑 IWDG)

  • 1.8V供电区域: 由来:数字电路供电通过电压调节器降至1.8V 区域:CPU核心存储器 外设 注意 外设通过IO转到3.3v与外界交流 外设以1.8V运行降低功耗

  • 后备供电区域 引脚:VDD / VBAT 区域:LSE 32K晶体振荡器 / BKP数据寄存器 / RTC秒寄存器

PWR定义: Power Control电源控制,负责管理stm32内部的电源供电部分,可以实现可编程电源监测器和低功耗模式的功能 注意 可编程电源监测器:监控VDD电源电压,VDD下降到PVD阈值以下或上升到PVD阈值之上时,PVD会触发中断 低功耗模式:包括睡眠模式(Sleep),停机模式(Stop),和待机模式(Standby),可在系统空闲时,降低stm32功耗,延长设备使用时间

PWR:

  • PVD:监控VDD电源电压,VDD下降到PVD阈值以下输出高电平,上升到PVD阈值之上输出低电平时,PVD会触发外部中断

  • 睡眠模式 进入:WFI(等待中断) WFE(等待事件) 唤醒:中断 事件 唤醒后:从程序暂停的位置开始运行 影响:1.8V区域的CPU时钟关,对其他外设时钟无影响 / VDD区域无 / 电压调节器开 作用:CPU的时钟关了,程序就暂停了,但寄存器与存储器内的数据还能保存

  • 停止模式 进入:PDDS位设置为0,SLEEP位设置为1;LPDS位;调用WFI或WFE 唤醒: 外部中断中断模式 外部中断事件模式 唤醒后:从程序暂停的位置开始运行 影响:1.8V区域的CPU和外设时钟 / VDD区域HSI和HSE的振荡器关闭 / LPDS位设置为0电压调节器开 为1低功耗模式 作用:CPU外设的时钟都关了,程序就暂停了,但寄存器与存储器内的数据还能保存 注意 由于停止模式把PLL锁相环禁止了,从停止模式被唤醒时,系统内部时钟时HSI 8MHz,所以得调用函数SystemInit函数,重新启动HSE

  • 待机模式 进入:PDDS位设置为1,SLEEP位设置为1;LPDS位;调用WFI或WFE 唤醒: WKUP引脚上升沿(PA0/WKUP) / RTC闹钟事件 / NRST引脚上的外部复位 / IWDG复位 唤醒后:从程序从头开始运行 影响:1.8V区域的CPU和外设时钟 / VDD区域HSI和HSE的振荡器关闭 / 电压调节器关闭对应1.8V供电区域的停电 作用:CPU外设的时钟都关了,程序就暂停了;1.8V供电区域的停电寄存器与存储器内的数据全部丢失 注意停止模式和待机模式都没有关闭LSE和LSI,因为LSE得维持RTC运行,LSI得维持看门狗运行

PWR函数

PWR备份区使能函数:

  • 函数使用: 函数:PWR_BackuoAccessCmd 入参:ENABLE / DISABLE 返回值:无

  • 函数调用示例

PWR_BackuoAccessCmd(ENABLE);

注意 使能对RTC和BKP的访问

低功耗模式进入函数:

  • __WFI();

  • __WFE();

PWR停止模式进入函数:

  • 函数使用: 函数:PWR_EnterStopMode 入参:PWR_Regulator_ON PWR_Regulator_LowPower:开关电压调节器 / PWR_StopEntry_WFI PWR_StopEntry_WFE:进入方式 返回值:无

  • 函数调用示例

PWR_EnterStopMode(PWR_Regulator_ON, PWR_StopEntry_WFI);
SystemInit();

注意 进入停止模式,退出后系统时钟变为HSI,所以需要在PWR_EnterStopMode(PWR_Regulator_ON, PWR_StopEntry_WFI);在这个调用之后,调用SystemInit函数

PWR待机模式进入函数:

  • 函数使用: 函数:PWR_EnterSTANDBYMode 无参无返回值

  • 函数调用示例

PWR_EnterSTANDBYMode();

注意 进入待机模式,退出代码从头开始执行,已经调用SystemInit函数,所以不必在函数调用后再调用

PWR WKUP引脚唤醒功能配置函数:

  • 函数使用: 函数:PWR_WakeUpPinCmd 入参:ENABLE / DISABLE 返回值:无

  • 函数调用示例

PWR_WakeUpPinCmd(ENABLE);

PWR标志位:

PWR模块函数

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐