电源管理与监控是一个很复杂很难掌控的部分,不仅涉及到到源模式的选择,还牵扯到复杂的中断、以及中断如何处理等等。虽然学好这一部分对实现降低功耗的目的很有帮助,但对于目前的我们来说貌似“功耗”一词还稍微远了点。此外,这部分控制对防止和处理供电意外( (过高过低等)的发生很有帮助,不过貌似这个开发板如果不独立拿来做项目而只是接在电脑USB供电的话,一般也不会有什么问题。所以,我也只打算简单学一下。
I/O口和所有模拟单元包括晶振在内都由DVCC供电。内存(flash和RAM)和数字单元由核心电压VCORE供电。
DVCC:宽的电源电压范围1.8V-3.6V;
VCORE:DVCC经低压降电压调整器(LDO),产生的一个二次核心电压,专门为CPU数字逻辑供电,共有1.4V(0-12MHZ),1.6V(0-16MHZ),1.8V(0-20MHZ)和1.9V(0-25MHZ)四个级别。VCORE的最小允许电压依赖于选择的MCLK大小,也就是说高主频时需要配套较高的VCORE。
管理会产生复位(主要是上电期间),监控会产生中断(监控电压是否过高过低)。
我们最常用的是设置核心电压VCORE,还好有专门的函数库HAL_PMM.c/h。
在这个函数库里除了一些设置的定义外,最重要的就是定义了三个函数:
SetVCoreDown(uint8_t level):降低核心电压
SetVCoreUp(uint8_t level): 提高核心电压
SetVCore(uint8_t level):直接设置核心电压值(0-3共四级)
/*这个函数最重要,或者说有了这一个,前面两个就不需要了*/ |