低功耗版STM8L051的一個詭異配置
阿新 • • 發佈:2018-12-12
為了做個低功耗專案,從最便宜的STM8S003切換到低功耗系列裡較便宜的STM8L051;
在STM8S003上調通了HALT休眠處理後,最低待機電流是67uA;用了STM8L051後,實測能到2uA;
但是後來遇到個詭異的問題,TIMER4莫名其妙不動作,好像不計時了。開關中斷,改初始化配置,都沒用,很奇怪。
。
。
。
。
。
最後發現,是init'初始化的時候,沒有給TIMER4配置CLK時鐘源,導致的,
原來的程式碼並沒有寫TIM4,
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_4); CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_HSEConfig(CLK_HSE_ON); //----------- CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM3,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_I2C1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_USART1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_BEEP,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_TIM1,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_RTC,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_LCD,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_BOOTROM,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_AES,DISABLE); CLK_PeripheralClockConfig(CLK_Peripheral_SPI2,DISABLE); //-----------
後來加上了TIM4的ENABLE就好了。
TIM4_DeInit();//復位定時器4暫存器
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4,ENABLE);
TIM4_TimeBaseInit(TIM4_Prescaler_64,124);
//TIM4_PrescalerConfig(TIM4_Prescaler_64, TIM4_PSCReloadMode_Immediate);
可見如果你用庫函式配置了其他外設的CLK時鐘源,而沒有配置TIM4的話,系統預設是不會開啟TIM4的CLK時鐘分配的!!!!
也就是說要用一個外設,得先開啟一個對應的CLK分配才行,這是跟STM8S很大的不同,,,,,,,,,2333333