如果你象其它單片機一樣,開啟了AWU,然后來一句halt();
那么此時的電流為200uA左右,到此差不多心灰意冷,STM8S這么差勁兒!
仔細閱讀《STM8S系列MCU功耗管理》,它的電源分為MVR和LPVR,也搞不懂ST的科學家們為什么單片機在halt()時直接變為LPVR供電算了,非要手動設一下,通過設置內部時鐘寄存器CLK_ICKR的REGAH位可實現此功能
CLK_SlowActiveHaltWakeUpCmd(ENABLE);
經過這么一整,電流有改進,在69uA,和官方的PDF的68uA很接近,但仍不能滿足電池供電需求,官方PDF活躍停機電流為11uA@5V 9uA@3.3V,再仔細讀,原來必須要關閉FLASH,只是關閉了FLASH啟動要慢幾個us,這個無所謂了,只要不是秒級的,對我的應用無所謂,所以這兒還必須在halt()前先啟用活躍停機時關閉flash選項,FLASH_CR1 的AHALT位置1
這里要特別注意,在《STM8S參考手冊》中文參考手冊中,描述如下
AHALT:活躍停機(Active halt)模式下掉電
0:當MCU在活躍停機模式時FLASH處于掉電模式
1:當MCU在活躍停機模式時FLASH處于運行模式
所以這兒要是信了中文PDF,可能你將會和我一樣,要多折騰30分鐘,如果你執行 電流就變成了11uA
void Flash_OFF_act_halt(void){
FLASH->CR1 |= 0x04;
}
|