STM32待机形式简介
许多单片机都有低功耗形式,STM32也不破例。在体系或电源复位今后,微操控器处于运转状况。运转状况下的HCLK为CPU供给时钟,内核履行程序代码。当CPU不需持续运转时,能够运用多个低功耗形式来节约功耗,例如等候某个外部事情时。用户需求依据最低电源耗费,最快速发动时刻和可用的唤醒源等条件,选定一个最佳的低功耗形式。STM32的3种低功耗模
STM32的低功耗形式有3种:
1)睡觉形式(CM3内核中止,外设依然运转)
2)中止形式(一切时钟都中止)
3)待机形式(1.8V内核电源封闭)
在这三种低功耗形式中,最低功耗的是待机形式,在此形式下,最低只需求2uA左右的电流。停机形式是次低功耗的,其典型的电流耗费在20uA左右。最终便是睡觉形式了。用户能够依据自己的需求来决议运用哪种低功耗形式。
进入待机形式履行过程
有4种办法能够退出待机形式,即当一个外部复位(NRST引脚)、IWDG复位、WKUP引脚上的上升沿或RTC闹钟事情产生时,微操控器从待机形式退出。从待机唤醒后,除了电源操控/状况寄存器(PWR_CSR),一切寄存器被复位。
从待机形式唤醒后的代码履行等同于复位后的履行(采样发动形式引脚,读取复位向量等)。电源操控/状况寄存器(PWR_CSR)将会指示内核由待机状况退出。
在进入待机形式后,除了复位引脚以及被设置为防侵入或校准输出时的TAMPER引脚和被使能的唤醒引脚(WK_UP脚),其他的IO引脚都将处于高阻态。
进入待机形式的办法,以及设置WK_UP引脚用于把STM32从待机形式唤醒的办法。具体过程如下:
1)使能电源时钟。
由于要装备电源操控寄存器,所以必须先使能电源时钟。在库函数中,使能电源时钟的办法是:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟
2)设置WK_UP引脚作为唤醒源。
使能时钟之后后再设置PWR_CSR的EWUP位,使能WK_UP用于将CPU从待机形式唤醒。在库函数中,设置使能WK_UP用于唤醒CPU待机形式的函数是:
PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功用
3)设置SLEEPDEEP位,设置PDDS位,履行WFI指令,进入待机形式。
进入待机形式,首先要设置SLEEPDEEP位,接着咱们经过PWR_CR设置PDDS位,使得CPU进入深度睡觉时进入待机形式,最终履行WFI指令开端进入待机形式,并等候WK_UP中止的到来。在库函数中,进行上面三个功用进入待机形式是在函数PWR_EnterSTANDBYMode中完成的:
voidPWR_EnterSTANDBYMode(void);
4)最终编写WK_UP中止函数。
由于咱们经过WK_UP中止(PA0中止)来唤醒CPU,所以咱们有必要设置一下该中止函数,一起咱们也经过该函数里边进入待机形式。
经过以上几个过程的设置,咱们就能够运用STM32的待机形式了,而且能够经过WK_UP来唤醒CPU
- voidSys_Standby(void)
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外设时钟
- PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚功用
- PWR_EnterSTANDBYMode();//进入待命(STANDBY)形式
- }
- //体系进入待机形式
- voidSys_Enter_Standby(void)
- {
- RCC_APB2PeriphResetCmd(0X01FC,DISABLE);//复位一切IO口
- Sys_Standby();
- }