標(biāo)題: 一個(gè)關(guān)于STM32FL15X芯片RTC應(yīng)用中的定時(shí)喚醒話題 [打印本頁]

作者: taoran    時(shí)間: 2015-12-7 00:15
標(biāo)題: 一個(gè)關(guān)于STM32FL15X芯片RTC應(yīng)用中的定時(shí)喚醒話題

                                              

                                 整理:MilerShao

        某天某工程師說,在用STM32F151開發(fā)產(chǎn)品工程中遇到一奇怪現(xiàn)象。

他啟用了RTC中的喚醒定時(shí)器,定期喚醒休眠的MCU. 發(fā)現(xiàn)在休眠中途(未到達(dá)醒來時(shí))外部復(fù)位腳一個(gè)復(fù)位信號,STM32L151程序并再次配置喚醒定時(shí)器后入眠,但之后休眠喚醒的時(shí)間依然會緊跟著上一次設(shè)置和計(jì)時(shí)時(shí)間

例如:假設(shè)MCU上電后的定時(shí)喚醒間隔設(shè)置為30分鐘進(jìn)入休眠到了20分鐘時(shí),給MCU復(fù)位腳一個(gè)復(fù)位信號,強(qiáng)令其
來重新跑程序,
而且程序里執(zhí)行了30分鐘喚醒配置后才入眠,可結(jié)果只跑了10分鐘后,MCU被喚醒了。雖然中途MCU被復(fù)位
過一次,再休眠后,喚醒時(shí)間還是緊接著上次來的,
按理說復(fù)位過一次又重新設(shè)置了,后面應(yīng)該是30分鐘后才醒,怎么10分鐘就醒呢?

 
 


從現(xiàn)象描述來看,喚醒定時(shí)器啟動(dòng)后,雖然經(jīng)歷中途的系統(tǒng)復(fù)位,其計(jì)時(shí)喚醒參數(shù)以及計(jì)數(shù)器并未受到影響。盡管系
統(tǒng)復(fù)位、低功耗模式【
SLEEP/STOP/STANDBY】不會影響喚醒計(jì)數(shù)器的工作,但中途復(fù)位后,該工程師陳述有做重新配置
相關(guān)時(shí)間參數(shù)的動(dòng)作,按理說,中途配置后的喚醒時(shí)間應(yīng)該是30分鐘而不是10分鐘。難道他在中途復(fù)位后運(yùn)行的相關(guān)配
置參數(shù)沒有生效?

查看手冊,配置喚醒定時(shí)器按如下幾步操作:


查看其wake up timer相關(guān)配置代碼,代碼里并沒有發(fā)現(xiàn)上面3步中的1。配置喚醒定時(shí)器必須保證RTC_CR寄存器
中的
WUTE0才可以進(jìn)行。他雖然沒寫這句代碼,幸運(yùn)的是MCU每次
上電復(fù)位后,該位默認(rèn)值就是0,所以上電復(fù)位后配
置喚醒定時(shí)器即使不寫一句令
WUTE0的代碼,配置依然暢通有效。

但如果你上電配置過后,即使系統(tǒng)復(fù)位重新運(yùn)行程序再來配置喚醒定時(shí)器,就沒那么好運(yùn)了。因?yàn)榇藭r(shí)的WUTE位在
上電復(fù)位后的第一次配置的過程中已經(jīng)置
1了,而且 RTC寄存器的內(nèi)容又不受
系統(tǒng)復(fù)位【哪些是屬于系統(tǒng)復(fù)位,詳看手冊
 
影響。所以,后面要想修改調(diào)整配置參數(shù),就得手動(dòng)先讓WUTE清零,否則,出現(xiàn)上面反映的情況就不難理解了。


作者: 18813017101    時(shí)間: 2018-8-28 16:11
您好,我想請教一下這個(gè)喚醒時(shí)間怎么設(shè)置?我現(xiàn)在只能設(shè)置成30s左右
作者: 惡趣味請問    時(shí)間: 2018-8-28 16:27
不錯(cuò)喲,下載過來學(xué)習(xí)一下




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1