stm32F103R6之低功耗模式
概述在系统或电源复位以后,微控制器处于运行状态。当CPU不需继续运行时,可以利用多种低功耗模式来节省功耗。用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
STM32F103有三种低功耗模式:
睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行)
停止模式(所有的时钟都已停止)
待机模式(1.8V电源关闭)
此外,在运行模式下,根据功耗与频率成正比关系,可以通过以下方式来降低功耗:
降低系统时钟
关闭APB和AHB总线上未被使用的外设时钟。
图 1低功耗模式一览
睡眠模式
通过执行WFI(wait for interrupt)或WFE(wait for event)指令进入睡眠状态。根据Cortex™-M3系统控制寄存器中的SLEEPONEXIT位的值,有两种选项可用于选择睡眠模式进入机制:
SLEEP-NOW:如果SLEEPONEXIT被清除,当WFI或WFE被执行时,微控制器立即进入睡眠模式。
SLEEP-ON-EXIT:如果SLEEPONEXIT位被置位,系统从最低优先级的中断处理程序中退出时(处理完所有中断后),微控制器就立即进入睡眠模式。
在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。 如何退出睡眠模式?
1、如果是执行WFI指令进入的睡眠模式,任意一个外设中断都能将系统从睡眠模式唤醒。
2、如果是执行WFE指令进入的睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。 停止模式
停止模式是在Cortex™-M3的睡眠模式基础上结合了外设的时钟控制机制。
在停止模式下电压调节器可运行在正常或低功耗模式。此时在1.8V供电区域的的所有时钟都被停止,PLL、HSI和HSE RC振荡器的功能被禁止,SRAM和寄存器内容被保留下来。
在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入停止模式:
设置Cortex-M3系统控制寄存器中的SLEEPDEEP位
清除电源控制寄存器(PWR_CR)中的PDDS位
通过设置PWR_CR中LPDS位选择电压调节器的模式 注:为了进入停止模式,所有的外部中断的请求位(挂起寄存器(EXTI_PR))和RTC的闹钟标志都必须被清除,否则停止模式的进入流程将会被跳过,程序继续运行。如果在进入停止模式前ADC和DAC没有被关闭,那么这些外设仍然消耗电流。通过设置寄存器ADC_CR2的ADON位和寄存器DAC_CR的ENx位为0可关闭这2个外设。 如何退出停止模式?
当一个中断(执行WFI命令进入的停止模式)或唤醒事件(执行WFE命令进入的停止模式)导致退出停止模式时,HSI RC振荡器被选为系统时钟。
当电压调节器处于低功耗模式下,当系统从停止模式退出时,将会有一段额外的启动延时。如果在停止模式期间保持内部调节器开启,则退出启动时间会缩短,但相应的功耗会增加。 待机模式
待机模式可实现系统的最低功耗。该模式是在Cortex-M3睡眠模式时关闭电压调节器。整个1.8V供电区域被断电。PLL、HSI和HSE振荡器也被断电。SRAM和寄存器内容丢失。只有备份域的寄存器和待机电路维持供电。
在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:
复位引脚(始终有效)
当被设置为防侵入或校准输出时的TAMPER引脚
被使能的唤醒引脚 以下条件下执行WFI(等待中断)或WFE(等待事件)指令可进入待机模式:
设置Cortex™-M3系统控制寄存器中的SLEEPDEEP位
设置电源控制寄存器(PWR_CR)中的PDDS位
清除电源控制/状态寄存器(PWR_CSR)中的WUF位 如何退出待机模式?
当一个外部复位(NRST引脚)、IWDG(独立看门狗)复位、WKUP引脚上的上升沿或RTC闹钟事件的上升沿发生时,微控制器从待机模式退出。
从待机唤醒后,除了电源控制/状态寄存器(PWR_CSR),所有寄存器被复位。 从待机模式唤醒后的代码执行等同于复位后的执行(采样启动模式引脚、读取复位向量等)。
现实中make_youtiao()这个函数需要处理的数据非常庞大
通常用发光二极管LED代替小灯
断优先级有冲突导致UART-RX的正常接收
电压范围称为工作电源电压
时钟越快功耗越大、抗电磁干扰能力越弱
If-Else 已成为事实上的代码分支解决方案
在掌握对象的变化频度时是有效的
B声明的函数名的命名规则很不符合A的口味
将小灯接在单片机的P1.0端口上
144MHz超标点与晶体有关
让其作为芯片休眠唤醒脚
页:
[1]