STM32L151的RTC總結(jié)
1.與RTC有關(guān)的IO口:PC13(TAMPER-RTC)不能設(shè)置成GPIO_Mode_AN狀態(tài),否則進(jìn)不了RTC中斷。(可以設(shè)置成GPIO_Mode_IN)。
2.需要在設(shè)置RTC時(shí)鐘之前 RTC_WakeUpCmd(DISABLE),這一句官方例子上沒(méi)有,如果沒(méi)有這一句現(xiàn)象為只有當(dāng)重新上電的時(shí)候RTC才會(huì)重置,而重新運(yùn)行程序的時(shí)候RTC不會(huì)重置。
3.在設(shè)置RTC的定時(shí)喚醒中斷前,一定要清除相應(yīng)的中斷,否則表現(xiàn)的現(xiàn)象為有時(shí)能進(jìn)入RTC中斷,有時(shí)不能進(jìn)。
RTC_ClearITPendingBit(RTC_IT_WUT);
RTC_ITConfig(RTC_IT_WUT, ENABLE);
4.RTC的周期中斷將CPU從停機(jī)模式喚醒時(shí),一定要清除Wake-Up標(biāo)志位,否則只能進(jìn)一次RTC中斷,后續(xù)進(jìn)不了。
if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)// 檢查喚醒標(biāo)志是否設(shè)置
{
PWR_ClearFlag(PWR_FLAG_WU);
}
未解決的問(wèn)題:當(dāng)RTC將CPU喚醒后,如果配置MSI為時(shí)鐘源,當(dāng)再次進(jìn)入低功耗時(shí),功耗維持在60-70ua,原因未知;當(dāng)采用HSE為中斷源時(shí),RTC中斷會(huì)在三四次后不能再進(jìn)入,目前采用HSI作為RTC喚醒后的中斷源。