很多單片機具有低功耗模式,默認情況下,系統復位或上電復位后,微控制器進入運行模式。在運行模式下,HCLK 為 CPU 提供時鐘,并執行相應程序。當需要實現低功耗項目的時候,可以利用多種低功耗模式來節省功耗。
運行模式下降低功耗方式
降低系統時鐘速度
不使用 APBx 和 AHB 外設時,將對應的外設時鐘關閉
STM32 提供了 3 種低功耗模式
睡眠模式( 內核停止,外設如NVIC,系統時鐘Systick仍運行。)
停止模式(所有時鐘都已停止。1.8V內核電源工作。PLL,HIS和HSE RC振蕩器功能禁止。寄存器和SRAM內容保留)
待機模式( 1.8V內核電源關閉。只有備份寄存器和待機電路維持供電。寄存器和SRAM內容全部丟失。實現最低功耗。)
這三種模式所需的功耗是逐級遞減,也就是說待機模式功耗是最低的,需要具體了解的同學可以去看下STM32中文參考手冊
STM32電源框圖
待機模式
當檢測到外部復位(NRST 引腳)、IWDG 復位、 WKUP 引腳上升沿、 RTC 鬧鐘事件的上升沿時,微控制器退出待機模式。本章我們是通過 WKUP 引腳(PA0)上升沿來退出待機模式,當然也可以直接通過芯片復位管腳 NRST 退出。
從待機模式喚醒后,除了電源控制/狀態寄存器(PWR_CSR),所有的寄存器豆
被復位,程序將按照復位(啟動引腳采樣、復位向量已獲取等)后的方式重新執行。電源控制/狀態寄存器(PWR_CSR)將會指示內核由待機狀態退出。
在進入待機模式后,除了復位引腳以及被設置為防侵入或校準輸出時的TAMPER (PC13)引腳和被使能的喚醒引腳( WK_UP 腳(PA0)),其他的 IO 引腳都將處于高阻態
待機模式配置步驟
/*******************************************************************************
* 函 數 名 : Enter_Standby_Mode
* 函數功能 : 進入待機模式
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void Enter_Standby_Mode(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能PWR外設時鐘
PWR_ClearFlag(PWR_FLAG_WU);//清除Wake-up 標志
PWR_WakeUpPinCmd(ENABLE);//使能喚醒管腳 使能或者失能喚醒管腳功能
PWR_EnterSTANDBYMode();//進入待機模式
}
主函數
/*******************************************************************************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
int main()
{
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優先級分組 分2組
LED_Init();
USART1_Init(9600);
while(1)
{
printf("time: 5rn");
led1=0;
delay_ms(1000); //隔1秒顯示計數
printf("time: 4rn");
led1=1;
delay_ms(1000);
printf("time: 3rn");
led1=0;
delay_ms(1000);
printf("time: 2rn");
led1=1;
delay_ms(1000);
printf("time: 1rn");
led1=0;
delay_ms(1000);
printf("進入系統待機模式rn");
Enter_Standby_Mode();
}
}
實驗現象
未進入待機模式時LED一秒閃爍一次,串口一秒打印一次數據,五秒后進入待機模式
--END--
-
微控制器
+關注
關注
48文章
7542瀏覽量
151316 -
單片機
+關注
關注
6035文章
44554瀏覽量
634653 -
低功耗
+關注
關注
10文章
2396瀏覽量
103675
發布評論請先 登錄
相關推薦
評論