<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)之路(五)——RTC系統(tǒng)時(shí)鐘

          STM32學(xué)習(xí)之路(五)——RTC系統(tǒng)時(shí)鐘

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏

          STM32的CPU有一個(gè)RTC引腳,用于連接電池。當(dāng)系統(tǒng)掉電后,自動(dòng)由電池給RTC供電,完成時(shí)間計(jì)數(shù)。
          對(duì)RTC的訪問(wèn)是通過(guò)APB1接口進(jìn)行的。APB1剛被開啟的時(shí)候,從APB1讀來(lái)的RTC寄存器的第一個(gè)值可能是被破壞了的。因此在程序中,先等待RTC_CRL寄存器中的RSF位被硬件置1,然后才開始讀操作。對(duì)于寫操作,在每一次寫操作必須保證前一次寫操作完成,即通過(guò)查詢RTC_CR寄存器中的RTOFF狀態(tài)位,判斷RTC寄存器是否處于更新?tīng)顟B(tài)中。只有當(dāng)RTOFF狀態(tài)位是1,才可以寫RTC寄存器。
          RTC模塊的寄存器實(shí)際上只有5個(gè):控制寄存器RTC_CR,預(yù)分頻裝在寄存器RTC_PRL,預(yù)分頻余數(shù)寄存器RTC_DIV,計(jì)數(shù)器寄存器RTC_CNT,鬧鐘寄存器RTC_ALR。
          第一次配置需要做的工作包括:
          1.打開電源管理和備份寄存器時(shí)鐘。注意一定要打開備份寄存器時(shí)鐘。正是通過(guò)備份寄存器寫固定的數(shù)據(jù)來(lái)判斷芯片是否是第一次使用RTC,從而在系統(tǒng)運(yùn)行時(shí)提示配置時(shí)鐘。
          2.使能RTC和備份寄存器的訪問(wèn)(復(fù)位默認(rèn)是關(guān)閉的)。
          3.選擇外部低速晶體為RTC時(shí)鐘,并使能時(shí)鐘。
          4.使能秒中斷。程序里在秒中斷里置位標(biāo)志位來(lái)通知主程序顯示時(shí)間數(shù)據(jù),同時(shí)在32位計(jì)數(shù)器到23:59:59時(shí)清零。
          5.設(shè)置RTC預(yù)分頻器,產(chǎn)生1秒信號(hào)計(jì)算公式。FTR_CLK=FRTCCLK/(PRL+1)設(shè)置32767產(chǎn)生秒信號(hào)。
          通過(guò)RTC_GetConter();獲取計(jì)數(shù)值,然后把這個(gè)計(jì)數(shù)值分別用小時(shí)、分鐘、秒來(lái)表示,最后還需要調(diào)用Printf函數(shù)把它顯示在超級(jí)終端窗口或相應(yīng)的其它顯示函數(shù)。

          本文引用地址:http://www.ex-cimer.com/article/201612/325073.htm

          效果圖見(jiàn)http://v.youku.com/v_show/id_XNTk5MTM4MjY4.html,比較有意思的一段小視頻。重點(diǎn)看后面的時(shí)間是按秒更新的。



          關(guān)鍵詞: STM32RTC系統(tǒng)時(shí)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();