最近學習了stm32的低功耗模式, 發現很多可以學習的地方, 微控制器功耗要低才能續航很久
低功耗模式 -如果是中斷就先執行中斷的程式,然後執行上次停下的**
這種模式感覺只有在等待中斷時候才有用, 比如sleep(1), 不過功耗不是降太多
只有靠外部中斷喚醒或者rtc定時器和看門狗喚醒
因為rtc的鬧鐘中斷是接到外部中斷的, 所以也算是外部中斷
這種模式適合長時間休眠, 用rtc來喚醒, 比如1分鐘喚醒一次, 餵狗 然後馬上休眠
待機模式, 這種模式功耗最低 這種模式適合長按開機長按關
// 進入低功耗模式 -如果是中斷就先執行中斷的程式,然後執行上次停下的**
void module_pwr_enter_sleep_mode(void)
// 進入stop模式,靠外部中斷喚醒
void module_pwr_enter_stop_mode(void)
// 進入待機模式
void module_pwr_enter_standby_mode(void)
// stop模式喚醒, 配置時鐘
void module_pwr_stop_mode_wake(void)
; rcc_clkinittypedef rcc_clkinitstruct = ;
rcc_periphclkinittypedef periphclkinitstruct = ;
/** configure the main internal regulator output voltage
*/__hal_rcc_pwr_clk_enable();
__hal_pwr_voltagescaling_config(pwr_regulator_voltage_scale1);
/** initializes the rcc oscillators according to the specified parameters
* in the rcc_oscinittypedef structure.
*/rcc_oscinitstruct.oscillatortype = rcc_oscillatortype_lsi|rcc_oscillatortype_hse
|rcc_oscillatortype_lse;
rcc_oscinitstruct.hsestate = rcc_hse_on;
rcc_oscinitstruct.lsestate = rcc_lse_on;
rcc_oscinitstruct.lsistate = rcc_lsi_on;
rcc_oscinitstruct.pll.pllstate = rcc_pll_on;
rcc_oscinitstruct.pll.pllsource = rcc_pllsource_hse;
rcc_oscinitstruct.pll.pllm = 25;
rcc_oscinitstruct.pll.plln = 336;
rcc_oscinitstruct.pll.pllp = rcc_pllp_div2;
rcc_oscinitstruct.pll.pllq = 4;
if (hal_rcc_oscconfig(&rcc_oscinitstruct) != hal_ok)
/** initializes the cpu, ahb and apb buses clocks
*/rcc_clkinitstruct.clocktype = rcc_clocktype_hclk|rcc_clocktype_sysclk
|rcc_clocktype_pclk1|rcc_clocktype_pclk2;
rcc_clkinitstruct.sysclksource = rcc_sysclksource_pllclk;
rcc_clkinitstruct.ahbclkdivider = rcc_sysclk_div1;
rcc_clkinitstruct.apb1clkdivider = rcc_hclk_div4;
rcc_clkinitstruct.apb2clkdivider = rcc_hclk_div2;
if (hal_rcc_clockconfig(&rcc_clkinitstruct, flash_latency_5) != hal_ok)
periphclkinitstruct.periphclockselection = rcc_periphclk_rtc;
periphclkinitstruct.rtcclockselection = rcc_rtcclksource_lse;
if (hal_rccex_periphclkconfig(&periphclkinitstruct) != hal_ok)
// 恢復系統時鐘
hal_resumetick();
}
機這種操作 STM32低功耗模式 停止模式
停止模式是在cortex m3的深睡眠模式基礎上結合了外設的時鐘控制機制,在停止模式下電壓調節器可執行在正常或低功耗模式。此時在1.8v供電區域的的所有時鐘都被停止,pll hsi和hse rc振盪器的功能被禁止,sram和暫存器內容被保留下來。thumb指令不支援彙編內聯 採用如下方法實現執行彙編...
STM32HAL 紅外遙控(NEC)
整理了乙個nec協議的紅外程式,nec協議,物理環境為f103原子戰艦v3,使用stm32cubemx生成初始程式。定時器配置72分頻,9999裝載值 10ms nec協議 資料格式 同步碼頭 位址碼 位址反碼 按鍵碼 按鍵反碼 lsb先行 同步碼頭 9ms低電平 4.5ms高電平 連發碼 9ms低...
STM32 HAL庫學習筆記
1 系統時鐘 一般用stm32cube生成,使用者只需要會用stm32cube就行。2 gpio輸出void led gpio config void 3 gpio輸入void key gpio config void 4 外部中斷void exti key config void void ext...