1、STM32的低功耗
眾所周知,功耗一直是嵌入式開發(fā)中的重要考慮因素,在便攜式設(shè)備和小型設(shè)備中需要考慮到設(shè)備的功耗,這就要求低功耗設(shè)備在執(zhí)行任務(wù)時(shí)盡可能減少能源消耗,以延長電池壽命或降低能源消耗。
在STM32的眾系列中,特別是STM32F103、STM32F4 , STM32L還有STM32U系列,提供了多種低功耗模式和機(jī)制,可以降低系統(tǒng)功耗,延長電池壽命或減少能源消耗。包括多個(gè)低功耗模式、時(shí)鐘管理、外設(shè)控制等。
本期我們將以STM32F103為例介紹STM32的低功耗模式。
硬件設(shè)備:STM32F103C8T6最小系統(tǒng)板
2、低功耗模式
STM32F1的芯片手冊(cè)中提到STM32的低功耗總共有三種模式:休眠模式,停止模式,待機(jī)模式。并且還可以通過降低系統(tǒng)時(shí)鐘的方式來降低功耗。接下來我們?cè)敿?xì)介紹這三種模式的區(qū)別。
從表中我們可以看出三種低功耗模式的進(jìn)入條件以及喚醒條件,其中低功耗程度從Sleep休眠模式到Standby待機(jī)模式遞增。
在待機(jī)模式中,需要通過Wake Up引腳的上升沿來喚醒系統(tǒng)(或者RTC報(bào)警,RST復(fù)位以及看門狗)
3、睡眠模式
當(dāng)我們配執(zhí)行了WFI或WFE模式(等待中斷或等待事件)來進(jìn)入睡眠模式。通過配置SLEEPONEXIT位來選擇是否立刻進(jìn)入睡眠模式。
當(dāng)清除該位時(shí),系統(tǒng)就會(huì)立刻進(jìn)入低功耗模式。當(dāng)該位置1時(shí),就會(huì)等待中斷或者事件之后進(jìn)入低功耗模式。
WFI(中斷)和WFE(事件)模式退出睡眠模式的情況并不相同,如果我們是從WFI進(jìn)入的睡眠模式,那么當(dāng)中斷事件發(fā)生時(shí),就會(huì)退出低功耗模式,例如外部中斷,定時(shí)器中斷等。
如果從WFE模式進(jìn)入的睡眠模式,那么也提供了兩種喚醒方式。
4、停止模式
停止模式可以認(rèn)為是深度睡眠,在停止模式中,將會(huì)關(guān)閉掛載在1.8V工作域中的時(shí)鐘,還有像HSI和HSE等時(shí)鐘也會(huì)被關(guān)閉,SRAM和寄存器中的值將會(huì)保存下來,IO口的狀態(tài)會(huì)保持在之前的運(yùn)行模式的狀態(tài)。
該表提供了如何進(jìn)入停止模式以及如何退出停止模式。稍后會(huì)在程序中使用。
5、待機(jī)模式
待機(jī)模式是功耗最低的模式,不僅僅關(guān)閉了各個(gè)時(shí)鐘,還關(guān)閉了包括1.8V工作域內(nèi)的外設(shè)與時(shí)鐘。SRAM和各寄存器內(nèi)的值也會(huì)丟失。
該表提供了如何進(jìn)入待機(jī)模式以及退出待機(jī)模式,退出待機(jī)模式的事件是:WKUP引腳接收到上升沿,RTC時(shí)鐘報(bào)警以及RST引腳觸發(fā)復(fù)位和看門狗復(fù)位。
需要注意的是喚醒之后系統(tǒng)處于復(fù)位狀態(tài)。
6、程序?qū)崿F(xiàn)
首先創(chuàng)建一份STM32的基礎(chǔ)工程,接著在HAL庫中我們可以使用如下代碼進(jìn)入低功耗模式:
? ?// 1. 等待 3 秒后進(jìn)入睡眠模式
? ?HAL_Delay(3000); ?// 延時(shí) 3 秒
? ?HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); ?// 進(jìn)入睡眠模式
? ?// 在這里,MCU進(jìn)入睡眠模式后,將等待中斷喚醒
? ?// 2. 等待 3 秒后進(jìn)入停止模式
? ?HAL_Delay(3000); ?// 延時(shí) 3 秒
? ?HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI); ?// 進(jìn)入停止模式
? ?// 在這里,MCU進(jìn)入停止模式后,也會(huì)等待中斷喚醒
? ?// 3. 等待 3 秒后進(jìn)入待機(jī)模式
? ?HAL_Delay(3000); ?// 延時(shí) 3 秒
? ?HAL_PWR_EnterSTANDBYMode(); ?// 進(jìn)入待機(jī)模式
? ?// 在待機(jī)模式下,MCU會(huì)停止所有時(shí)鐘,直到外部喚醒事件發(fā)生
由于設(shè)備欠缺,無法測試具體他們的功耗如何,因此本期就先到這里。