stm8s和stm8l低功耗對比

2022-07-17 09:09:10 字數 2195 閱讀 3371

在低功耗應用中,一般來說mcu是常態halt模式,然後偶爾被喚醒(外部中斷或者內部定時喚醒)進入執行模式。所以對比低功耗效能,一般來說只需要對比run模式和halt下的功耗即可,因為專案選用的是通過內部定時器喚醒,所以選用active halt mode。以下是stm8s003和stm8l151在這兩種模式下的功耗對比: 

在使用同樣的16m內部rc振盪器情況下,stm8s 3.7ma,stm8l 3.54ma,兩款mcu耗電量差不多。

在同樣的關閉外設,且使用內部低速rc振盪器喚醒的情況下:stm8s 10ua,stm8l 0.54ua。大約有20倍的差距,不過對於要求不是特別高的情況下,ua級別的差距影響不會太大。

為了實際驗證

,分別將微控制器焊接到空板子上編寫**進行測試。

32ms喚醒一次

主程式:

void main(void) }

中斷處理程式:

32ms喚醒一次

主程式:

void main(void)

gpio_init(gpioa, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_init(gpiob, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_init(gpioc, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_init(gpiod, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_init(gpioe, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_init(gpiof, gpio_pin_all, gpio_mode_out_pp_low_slow);

gpio_write(gpioa,0x00);

gpio_write(gpiob,0x00);

gpio_write(gpioc,0x00);

gpio_write(gpiod,0x00);

gpio_write(gpioe,0x00);

gpio_write(gpiof,0x00);

rtc_deinit(); //初始化預設狀態

clk_peripheralclockconfig(clk_peripheral_rtc, enable); //允許rtc時鐘

clk_rtcclockconfig(clk_rtcclksource_lsi, clk_rtcclkdiv_1); // 38k/1

rtc_wakeupclockconfig(rtc_wakeupclock_rtcclk_div2); //38/2=19k

rtc_setwakeupcounter(19*32); //19*32 32ms

rtc_itconfig(rtc_it_wut, enable); //開啟中斷

pwr_fastwakeupcmd(disable); //關閉快速喚醒功能

pwr_ultralowpowercmd(enable);//超低功耗

rtc_wakeupcmd(enable);

while(1)

halt();

中斷處理程式:

STM8L之低功耗

1 stm8l有幾個模式?a.非低功耗模式1個,run mode 執行模式 b.低功耗模式 3個 wait 等待模式 active halt 活躍停機模式 halt 停機模式 2 stm8l低功耗的3個模式有什麼區別?簡單地來說,就是 a.wait 等待模式 時鐘關閉 外設可用。通過中斷 外部中斷 ...

STM8S低功耗處理

要低功耗設計,主要考慮幾個方面 1.外設的低功耗,不需要的外設模組,全部關閉。2.gpio的處理,不需要的io最好做懸浮輸入處理。3.主時鐘的處理,先降到最低內部lsi時鐘,關閉其他不需要的時鐘模組。4.進入低功耗模式。除了執行模式,可以採用以下三種低功耗模式 等待 主動停機 停機。1 等待 wai...

STM8L低功耗除錯總結

檢視資料手冊的低功耗特性 low power features 可以了解到,stm8有5種功耗模式,如果讓mcu待機,最低功耗可以達到350na,這是相當的小!5 low power modes wait,low power run 5.1 a low power wait 3 a active h...