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