久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3519|回復: 3
打印 上一主題 下一主題
收起左側

STM32的RTC

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-12 21:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  要使用RTC,一般來說也順帶地使用上后備寄存器—這是因為RTC是一個簡單的秒中斷定時器,年月日時分秒的信息必須要找個地方能掉電保存才有意義.STM32的備份寄存器(BKP)是42個16位的寄存器,可用來存儲84個字節的用戶應用程序數據。他們處在備份域里,當VDD電源被切斷,他們仍然由VBAT維持供電。當系統在待機模式下被喚醒,或系統復位或電源復位時,他們也不會被復位。此外,BKP控制寄存器用來管理侵入檢測和RTC校準功能。復位后,對備份寄存器和RTC的訪問被禁止,并且備份域被保護以防止可能存在的意外的寫操作它是用后備電池供電的,只要配置好后,即使系統關電,32768的晶振和后備寄存器的數據也會得以維持.而且RTC的計數器是會繼續秒遞增的。


這里引用手冊里一段概述“RTC由兩個主要部分組成。第一部分(APB1接口)用來和 APB1總線相連。此單元還包含一組16位寄存器,可通過 APB1總線對其進讀寫操作。APB1接口以APB1總線時鐘為時鐘,用來與 APB1總線接口。
另一部分(RTC核)由一系可編程計數器組成,分成兩個主要模塊。第一個模塊是RTC的預分頻模塊,它可編程產生最長為 1秒的 RTC時間基準TR_CLK。RTC的預分頻模塊包含一個20位的可編程分頻器(RTC預分頻器)。在每個TR_CLK周期中,如果在 RTC_CR寄存器中設置相應允許位,則 RTC產生一個中斷(秒中斷)。第 2個模塊是一個32位的可編程的計數器,它可被初始化為當前的系統時間。系統時間以 TR_CLK速增長并與存儲在RTC_ALR寄存器中的可編程的時間相比較,如果RTC_CR控制寄存器中設置相應允許位,則比較匹配時將產生一個鬧鐘中斷。”
對于第一次實用RTC的時候我們要對它進行配置一番,現在大致說一下(代碼是通過調用RTC_Config函數來實現的):
1.打開電源管理和備份寄存器時鐘,提到備份寄存器這里要說一下,引用手冊--“備份寄存器是10個 16位的寄存器,可用來存儲 20個字節的用戶應用程序數據。他們處在備份域,當VDD電源被斷,他們仍然由VBAT維持供電。當系統在待機模式下被喚醒,或系統復位或電源復位時,他們也會被復位。”我們正式通過在備份寄存器寫固定的數據來判斷芯片是否第一次實用RTC,從而在系統運行RTC時提示配置時鐘的。
2.使能RTC和備份寄存器的訪問(復位默認關閉)。引用手冊--“復位后,對備份寄存器和RTC的訪問被禁止,并且備份域被保護以防止可能存在的意外的寫操作。電源控制寄存器(PWR_CR)的 DBP位必須被置1,以允許訪問備份寄存器和RTC.”因為程序要對RTC和備份寄存器操作,所以必須使能。
3.選擇外部低速晶體為RTC時鐘,并使能時鐘;
4.使能秒中斷,程序里在秒中斷里置位標志位來通知主程序顯示時間數據,同時在32位計數器到23:59:59時清零;
5.設置RTC預分頻器值產生1秒信號計算公式fTR_CLK = fRTCCLK/(PRL+1),我們設置32767來產生秒信號;

下面是RTC初始化程序
void RTC_configuration()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);//使能RTC后備寄存器的寫
BKP_DeInit();//BKP寄存器全部設為缺省值
RCC_LSEConfig(RCC_LSE_ON); //RCC打開了LSE時鐘
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);//等待LSE就緒,一般來說,如果諧振不對,就會死在這里,實際代碼請慎重
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//RTC使用時鐘源LSE
RCC_RTCCLKCmd(ENABLE);//RTC的時鐘開啟
RTC_WaitForSynchro();//RTC等待同步,
RTC_WaitForLastTask();//這個代碼在RTC中常常出現,類似于等待就緒的含義
//RTC_ITConfig(RTC_IT_SEC, ENABLE);//RTC秒中斷
RTC_WaitForLastTask();//
RTC_SetPrescaler(32767);//RTC預分頻,32768HZ,分為一秒一個振蕩,RTCperiod = RTCCLK/RTC_PR = (32.768KHz)/(32767+1)
RTC_WaitForLastTask(); //等待同步
PWR_BackupAccessCmd(DISABLE);//禁止RTC后備寄存器的寫      
}

為啥要不停的等呢??
在這里要注意一下,所有在對RTC寄存器操作之前都要判斷讀寫操作是否完成,也就是說當前是否有讀寫操作。系統內核是通過RTC的APB1接口來訪問RTC內部寄存器的,所以在上電復位,休眠喚醒的時候,我們要先對RTC時鐘與RTCAPB1時鐘進行重新同步,在同步完成后再對器進行操作,因為RTC的AP1接口使用的系統APB1的時鐘。上述配置在初次使用RTC時進行配置,在以后使用過程中,只要RTC外部電池持續供電,無論系統掉電還復位我們都無需重復配置,使用使能秒中斷就可以了這一點很是方便嘿嘿...

RTC核完全獨立于RTCAPB1接口。軟件通過APB1接口訪問RTC的預分頻值、計數器值和鬧鐘值。但是,相關的可讀寄存器只在與RTCAPB1時鐘進行重新同步的RTC時鐘的上升沿被更新。RTC標志也是如此的。這意味著,如果APB1接口曾經被關閉,而讀操作又是在剛剛重新開啟APB1之后,則在第一次的內部寄存器更新之前,從APB1上讀出的RTC寄存器數值可能被破壞了(通常讀到0)。
因此,若在讀取RTC寄存器時,RTC的APB1接口曾經處于禁止狀態,則軟件首先必須等待RTC_CRL寄存器中的RSF位(寄存器同步標志)被硬件置’1’。
注: RTC的APB1接口不受WFI和WFE等低功耗模式的影響。

NVIC的配置
void NVIC_Configuration()
{  
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  // 搶占式優先級別
NVIC_InitStructure.NVIC_IRQChannel =RTC_IRQChannel;//指定中斷源
NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;// 指定響應優先級別1
NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

void RTC_IRQHandler(void)
{
if(RTC_GetITStatus(RTC_IT_SEC) != RESET)//RTC發生了秒中斷(也有可能是溢出或者鬧鐘中斷)

{
   //此處添加代碼
   RTC_ClearITPendingBit(RTC_IT_SEC);
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:105662 發表于 2016-2-17 15:46 | 只看該作者
好東西  值得擁有
回復

使用道具 舉報

板凳
ID:160651 發表于 2017-1-7 22:01 | 只看該作者
受教了
回復

使用道具 舉報

地板
ID:254339 發表于 2017-11-28 10:03 | 只看該作者
我的NVIC處設置不對,就是按照上邊的步驟來的,為什么,問題報錯!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美涩涩网 | 久久久久久久亚洲精品 | 日韩一区二区免费视频 | 成人亚洲性情网站www在线观看 | 中文字幕av一区二区三区 | 久久精品这里精品 | 国产精品欧美日韩 | 欧美精品一区二区三区蜜臀 | 亚洲网在线 | 欧美高清成人 | 激情久久av一区av二区av三区 | 亚洲一区二区不卡在线观看 | www.av7788.com | 在线播放亚洲 | av一级一片 | 成人在线视频观看 | 在线视频一区二区三区 | 精品久久久久久久久久久 | 99色综合 | 久久大陆 | 国产欧美一级二级三级在线视频 | 久久综合一区 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲 欧美 综合 | 精品视频免费在线 | 夫妻午夜影院 | 在线男人天堂 | 久久久国产一区二区三区 | 欧美精品一区二区三区在线 | 亚洲精品免费在线观看 | 婷婷综合久久 | 久久a久久 | 国产精品高潮呻吟久久久久 | 欧美日韩国产精品一区二区 | 久久99深爱久久99精品 | 天天操夜夜艹 | 亚洲性视频 | aaaa日韩 | 在线免费亚洲视频 | 成人在线免费电影 | 欧美精品欧美精品系列 |