STM32單片機(jī)中RTC的秒中斷的原理解析_第1頁
STM32單片機(jī)中RTC的秒中斷的原理解析_第2頁
STM32單片機(jī)中RTC的秒中斷的原理解析_第3頁
STM32單片機(jī)中RTC的秒中斷的原理解析_第4頁
STM32單片機(jī)中RTC的秒中斷的原理解析_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

STM32單片機(jī)中RTC的秒中斷的原理解析RTC(RealTimeClock)是實(shí)時時鐘的意思,它其實(shí)和TIM有點(diǎn)類似,也是利用計(jì)數(shù)的原理,選擇RTC時鐘源,再進(jìn)行分頻,到達(dá)計(jì)數(shù)的目的。該文主要講述關(guān)于RTC的秒中斷功能,這個功能類似SysTick系統(tǒng)滴答的功能。RTC秒中斷功能其實(shí)是每計(jì)數(shù)一次就中斷一次。注意,這里所說的秒中斷并非一定是一秒的時間,它是由RTC時鐘源和分頻值決定的“秒”的時間,當(dāng)然也是可以做到1秒鐘中斷一次。本文章提供的實(shí)例工程,其實(shí)驗(yàn)效果是:主函數(shù)間隔0.5秒LED變化一次;秒中斷一次打印數(shù)據(jù)“RTCSec.。.”;也就是LED變化一次,串口打印一次數(shù)據(jù)“RTCSec.。.”擴(kuò)展部分的功能RTC計(jì)數(shù):可以實(shí)現(xiàn)RTC鬧鐘,本文將提供實(shí)例工程源代碼供大家下載學(xué)習(xí)。Ⅱ、實(shí)例工程下載筆者針對于初學(xué)者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學(xué)者一看就明白,以簡單明了的工程供大家學(xué)習(xí)。筆者提供的實(shí)例工程都是在板子上經(jīng)過多次測試并沒有問題才上傳至360云盤,歡迎下載測試、參照學(xué)習(xí)。提供下載的軟件工程是STM32F103ZE的,但F1其他型號也適用(適用F1其他型號:關(guān)注微信,回復(fù)“修改型號”)。STM32F10x_RTC鬧鐘實(shí)例源代碼工程:/cBbpu3gIGK38a訪問密碼05daSTM32F10x_RTC秒中斷實(shí)例源代碼工程:/cBbpPnhYbXR9x訪問密碼561fSTM32F1資料:/crBUdUGdYKam2訪問密碼ca90Ⅲ、原理描述以筆者個人學(xué)習(xí)經(jīng)歷來說,想要掌握其真正原理,最好還是查看參考手冊(現(xiàn)在有很多都翻譯為中文了),里面模塊的框圖,從框圖中大概就可以看到該模塊有些什么功能及其工作的原理。RTC框圖:從上面系統(tǒng)框圖來分析“RTC秒中斷”的原理:1、RTC時鐘源,總共有三類:RCC_RTCCLKSource_LSERCC_RTCCLKSource_LSIRCC_RTCCLKSource_HSE_Div128本文實(shí)例代碼是:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);使用“RCC_RTCCLKSource_HSE_Div128”作為時鐘源(高速時鐘源),也就是外部高速時鐘的128分頻,也就是每秒8M/128(62500)個脈沖;當(dāng)然,我們也可以選擇另外兩個時鐘源,也就是使用低速時鐘源,一般應(yīng)用在RTC鬧鐘可RTC日歷等都使用低速時鐘源。2、RTC分頻:本文實(shí)例代碼是:RTC_SetPrescaler(62500);這個值是和上面對應(yīng)的,因?yàn)槲覀冞@里是實(shí)現(xiàn)真正的1秒鐘中斷一次。3、RTC中斷:RTC中斷有三種:RTC_IT_SEC秒中斷RTC_IT_ALR鬧鐘中斷RTC_IT_OW(計(jì)數(shù))溢出中斷本文實(shí)例是:RTC_ITConfig(RTC_IT_SEC,ENABLE);使能RTC_IT_SEC秒中斷。再次強(qiáng)調(diào):這里的“秒中斷”是概念上的秒中斷,它的中斷間隔時間是根據(jù)你選擇的時鐘源和分頻值決定的,并非真正的1秒鐘中斷一次。我們可以試著將源代碼中的分頻值該62500的一半31250,可以看得出來,秒中斷的間隔時間為0.5秒(請自行修改實(shí)驗(yàn)測試)。Ⅳ、源代碼分析筆者以F1標(biāo)準(zhǔn)外設(shè)庫(同時也建議初學(xué)者使用官方的標(biāo)準(zhǔn)外設(shè)庫)為基礎(chǔ)建立的工程,主要以庫的方式來講述(若您的F1芯片與提供工程不一樣,可微信回復(fù)“修改型號”)。下面將講述關(guān)于“RTC秒中斷”重要的、容易弄錯的幾點(diǎn):1.RCC時鐘源該函數(shù)位于bsp.c文件下面;RCC是很多初學(xué)者,甚至已經(jīng)工作的朋友容易遺漏的地方,有很多朋友覺得它使用的外設(shè)不正常,很大部分是沒有配置RCC導(dǎo)致的。重點(diǎn)注意:A.外設(shè)RCC時鐘的配置要在其外設(shè)初始化的前面;B.匹配對應(yīng)時鐘。比如:RCC_APB2外設(shè)不要配置在RCC_APB1時鐘里面【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);這樣能編譯通過,但這是錯誤的代碼】2.RTC秒中斷配置該函數(shù)位于rtc.c文件下面;該函數(shù)請結(jié)合參考手冊(框圖和寄存器)理解。注意4點(diǎn):A.使能后備區(qū)域:PWR_BackupAccessCmd(ENABLE);從系統(tǒng)框圖可以看見RTC有陰影部分,其實(shí)這部分就是后備區(qū)域。因此,需要使能,這也是為什么上面需要配置RCC時鐘的原因。B.選擇RTC時鐘源:RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);在原理描述中說了,RTC時鐘源有三種:RCC_RTCCLKSource_LSERCC_RTCCLKSource_LSIRCC_RTCCLKSource_HSE_Div128可以在源代碼中查看其參數(shù),也是有3中可以選擇。C.使能RTC鬧鐘中斷:RTC_ITConfig(RTC_IT_SEC,ENABLE);RTC有三類中斷:RTC_IT_SEC秒中斷RTC_IT_ALR鬧鐘中斷RTC_IT_OW(計(jì)數(shù))溢出中斷我提供的拓展功能“RTC鬧鐘”就是使用鬧鐘中斷,可以下載實(shí)例工程查看源代碼。D.RTC分頻:RTC_SetPrescaler(62500);我們是為了得到真正的1秒鐘中斷一次,所以這里的值是62500=8M/128,這樣才能剛好1秒中斷一次。3.NVIC配置該函數(shù)位于bsp.c文件下面;我們要中斷,就需要配置NVIC(中斷控制器),為其分配優(yōu)先級。很多人覺得自己的配置沒問題,但程序就是不進(jìn)入中斷,原因可能就在這里。因此,NVIC這里也是容易忽略的地方。4.RTC中斷該函數(shù)位于stm32f10x_it.c文件下面;這里需要注意,RTC有三類中斷,但入口都是這個函數(shù),因此,需要在函數(shù)體里面分辨是哪一個中斷進(jìn)入了該函數(shù)。注意1點(diǎn):清除中斷標(biāo)志位:RTC_Clear

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論