《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 淺談STM32F10X芯片RTC實時時鐘

淺談STM32F10X芯片RTC實時時鐘

2015-11-03
關鍵詞: RTC STM32F10x

1、介紹

系統復位后,對后備寄存器和RTC的訪問被禁止,這是為了防止對后備區域(BKP)的意外寫操作。執行以下操作將使能對后備寄存器和RTC的訪問:

l         設置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能電源和后備接口時鐘(調用:RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE));

l         設置寄存器PWR_CR的DBP位,使能對后備寄存器和RTC的訪問(調用:PWR_BackupAccessCmd(ENABLE))。

2、RTC注意事項

l         RTC_PRL、RTC_ALR、RTC_CNT和RTC_DIV寄存器僅能通過備份域復位信號復位;系統復位或電源復位不會影響他們的值;

l         RTC提供APB1接口通ABP1讀取RTC寄存器的值,但必須等待RTC_CRL寄存器中的RSF(同步標志位)位被硬件置“1”之后進行;

l         RTC的配置必需在前一次寫操作結束(判斷RTC_CR寄存器中的RTOFF是否為1,為1表示更新完成),并設置RTC_CRL寄存器中的CNF位,使RTC進入配置模式后,才能寫入RTC_PRL、RTC_CNT、RTC_ALR寄存器,清除CNF標志位時,寫操作才實際有效(說明RTC是動態配置的,即是在RTC運行起來之后再進行配置);

l         RTC中的任何標志位都將保持掛起狀態(因為OWF、ALRF、SECF和RSF只能由硬件置位由軟件清零),直到適當的RTC_CR請求位被軟件復位,表示所有請求的中斷已經被接受;

l         若ALRF=1且ALRIE=1,則允許產生RTC全局中斷,如果EXTI控制器中允許產生EXTI線17中斷,則允許產生RTC全局中斷和RTC鬧鐘中斷,在這種情況下,一般設置鬧鈴中斷優先級高于全局中斷,如果全局中斷優先級高于鬧鈴中斷,則在全局中斷中必須清除鬧鐘中斷標志之后,才能進入鬧鐘中斷處理函數進一步處理(因為不清除標志,則會一直引發中斷,而全局中斷優先級高,就會一直在全局中斷中無法跳出來);

l         若ALRF=1,如果在EXTI控制器中設置了EXTI線17的中斷模式,則允許產生RTC鬧鐘中斷;如果在EXTI控制器中設置了EXTI線17的事件模式,則這條線上會產生一個脈沖(不會產生RTC鬧鐘中斷);

l         當APB1時鐘不運行時,OWF、ALRF、SECF和RSF位不被更新;

l         系統復位時禁止所有中斷,無掛起中斷請求,可以對RTC寄存器進行寫操作;

l         對RTC的寫操作必須使用如下過程之一與RTC秒標志同步:

         使用RTC鬧鐘中斷,并在中斷處理程序中修改RTC鬧鐘和/或RTC計數器;

         等待RTC控制寄存器中秒標志SECF置位,再更改RTC鬧鐘和/或RTC計數器。

 

圖1 簡化的RTC框圖(詳見手冊)

 

3、RTC寄存器描述

l         RTC控制寄存器高位RTC_CRH/低位RTC_CRL

l         RTC預分頻裝載寄存器(RTC_PRLH/RTC_PRLL)

l         RTC預分頻器余數寄存器(RTC_DIVH/RTC_DIVL)

l         RTC計數器寄存器(RTC_CNTH/RTC_CNTL)

l         RTC鬧鐘寄存器(RTC_ALRH/RTC_ALRL)

與RTC相關的寄存器有:

l         APB1外設時鐘使能寄存器RCC_APB1ENR的PWREN和BKPEN,使能電源和后備時鐘

l         電源控制寄存器PWR_CR的后備區域保護位:DBP

4、RTC配置流程

?         配置RCC:選擇系統時鐘、配置總線時鐘、使能外圍設備時鐘等;

?         調用RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE)函數,使能電源和備份域時鐘;

?         調用PWR_BackupAccessCmd(ENABLE)獲取后備區域訪問權限;

?         調用BKP_DeInit()函數將外設BKP的全部寄存器重設為缺省值;

?         配置并選擇RTC時鐘:調用RCC_RTCCLKConfig(RCC_RTCCLKSource_XXX)選擇是 LSE、HSE的128分頻或者LSI;

?         RTC配置:

n         調用RCC_RTCCLKCmd(ENABLE)使能RTC時鐘;

n         調用RTC_WaitForSynchro()等待RTC寄存器(RTC_CNT、RTC_ALR和RTC_PRL)與RTC的APB時鐘同步(等待RTOFF位置1);

n         調用RTC_WaitForLastTask()函數等待最近一次對RTC寄存器的寫操作完成;

n         調用RTC配置函數(如RTC_SetPrescaler(40000))配置RTC(說明:對RTC的控制寄存器是可以直接讀寫的;對RTC_PRL、RTC_CNT、RTC_ALR的寫操作需要進入配置模式,而讀他們則只需要等待同步完成(RSF置1)通過APB1接口讀取);

n         每次調用RTC配置函數之后需要調用RTC_WaitForLastTask()等待本次配置成功。

?         EXTI配置:若需要將RTC于EXTI線17相連,則配置EXTI線17為中斷/事件模式;

?         NVIC配置:若要產生中斷,則配置中斷向量控制器,使能EXTI15_10_IRQHandler中斷,或者使能RTC_IRQHandler中斷;

?         編寫中斷處理函數:注意一定要在中斷處理函數中調用RTC_ClearITPendingBit()函數清除對應的中斷標志位;

5、RTC配置實例

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM,0x00);

#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x00);

#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel =  RTCAlarm_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

/* 設置鬧鐘中斷優先級高于全局中斷 */

NVIC_InitStructure.NVIC_IRQChannel =  RTC_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

 

void RTC_Configuration(void)

{

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR,ENABLE);

PWR_BackupAccessCmd(ENABLE);

BKP_DeInit();

RCC_LSICmd(ENABLE);

while(RESET == RCC_GetFlagStatus(RCC_FLAG_LSIRDY))

{

}

RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);

RCC_RTCCLKCmd(ENABLE);

RTC_WaitForSynchro();

RTC_WaitForLastTask();

RTC_ITConfig(RTC_IT_ALR,ENABLE);

RTC_ITConfig(RTC_IT_SEC,ENABLE);

RTC_SetPrescaler(6000);

RTC_WaitForLastTask();

RTC_SetAlarm(29);

RTC_WaitForLastTask();

BKP_TamperPinCmd(DISABLE);

BKP_RTCOutputConfig(BKP_RTCOutputSource_Second);

}

void EXTI_Configuration(void)

{

EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line = EXTI_Line17;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

}

/* 中斷處理函數 */

void RTC_IRQHandler(void)

{

if(SET == RTC_GetITStatus(RTC_IT_SEC))

{

RTC_ClearITPendingBit(RTC_IT_SEC);

GPIO_WriteBit(GPIOB,GPIO_Pin_13,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_13)));

}

}

 

void RTCAlarm_IRQHandler(void)

{

if(SET == RTC_GetFlagStatus(RTC_IT_ALR))

{

RTC_ClearFlag(RTC_IT_ALR); /* 清除中斷標志位,包括外部中斷線標志 */

if(EXTI_GetITStatus(EXTI_Line17));

{

EXTI_ClearITPendingBit(EXTI_Line17);

GPIO_WriteBit(GPIOB,GPIO_Pin_8,(BitAction)(0));

}

}

}

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美国产一区二区三区激情无套| 亚洲风情亚aⅴ在线发布| 午夜视频一区在线观看| 久久综合伊人| 国户精品久久久久久久久久久不卡| 亚洲美女视频在线免费观看| 亚洲欧美日韩视频二区| 欧美中日韩免费视频| 亚洲一区二区av电影| 欧美一级精品大片| 久久se精品一区精品二区| 午夜在线a亚洲v天堂网2018| 久久综合色综合88| 欧美顶级少妇做爰| 一区二区免费在线观看| 欧美电影电视剧在线观看| 欧美在线播放高清精品| 欧美午夜宅男影院| 亚洲精品一区二| 亚洲国产欧美一区二区三区丁香婷| 久久精品一级爱片| 久久一区二区三区国产精品 | 亚洲国产美国国产综合一区二区| 亚洲精选在线观看| 亚洲日韩中文字幕在线播放| 国产日韩欧美黄色| 一区二区三区欧美日韩| 一区二区三区久久精品| 欧美日本在线| 在线看无码的免费网站| 久久www成人_看片免费不卡| 欧美亚洲免费电影| 国产精品video| 日韩视频三区| 亚洲特色特黄| 亚洲欧美色一区| 国产精品欧美一区喷水| 香蕉精品999视频一区二区| 欧美人成在线视频| 亚洲大胆人体在线| 亚洲国产天堂久久综合网| 欧美激情小视频| 欧美一级艳片视频免费观看| 欧美一区二区三区在线观看| 亚洲午夜在线观看| 国产欧美一区二区精品忘忧草| 久久午夜av| 99精品国产在热久久| 亚洲黄一区二区| 欧美亚洲自偷自偷| 精品99视频| 欧美欧美在线| 亚洲综合日韩| 一区二区冒白浆视频| 久久精品国产亚洲a| 最新国产成人在线观看| 久久福利一区| 一级日韩一区在线观看| 午夜精品国产精品大乳美女| 伊人久久大香线蕉综合热线| 亚洲国产精品999| 久久中文字幕导航| 亚洲片区在线| 蜜臀av在线播放一区二区三区| 一区二区成人精品| 国产欧美日韩一区二区三区在线观看| 欧美一区二区三区四区在线 | 亚洲精品123区| 美女免费视频一区| 亚洲影院免费| 欧美三级视频在线| 亚洲国产人成综合网站| 欧美日韩在线免费视频| 亚洲女ⅴideoshd黑人| 欧美暴力喷水在线| 一区二区三区国产盗摄| 男女av一区三区二区色多| 欧美在线观看视频在线 | 欧美天堂亚洲电影院在线播放| 欧美一级黄色网| 欧美色欧美亚洲高清在线视频| 亚洲成人资源网| 国产精品一级二级三级| 免费在线看一区| 欧美成人日韩| 亚洲深夜福利视频| 在线亚洲观看| 欧美日韩一区二区三区四区五区| 久久国产欧美日韩精品| 国产亚洲一区在线| 老司机精品视频网站| 亚洲一区免费视频| 欧美一区二区成人| 黄色另类av| 另类亚洲自拍| 久久精品国产成人| 久久久久久久久久久一区| 欧美自拍偷拍午夜视频| 欧美77777| 欧美69wwwcom| 亚洲一区二区三区高清不卡| 亚洲在线视频网站| 欧美日本高清| 日韩午夜免费| 99精品视频一区| 最新亚洲一区| 国产日韩专区在线| 欧美精品亚洲精品| 午夜精品一区二区三区在线视 | 亚洲欧洲中文日韩久久av乱码| 亚洲人午夜精品| 国产精品高清网站| 久久精品一二三| 亚洲专区在线视频| 久久成人资源| 一级日韩一区在线观看| 国产精品视频内| 欧美日韩精品系列| 午夜国产精品视频免费体验区| 日韩午夜免费视频| 午夜精品www| 一区二区三区我不卡| 国产精品婷婷午夜在线观看| 久久最新视频| 欧美激情一区二区三区| 欧美精品在线免费播放| 国产日韩视频一区二区三区| 亚洲桃花岛网站| 欧美一区二区精品| 久久国产精品一区二区三区| 亚洲精品国产拍免费91在线| 国产欧美亚洲视频| 欧美天天在线| 国产精品久久久999| 国产精品一区二区三区四区| 国产精品日韩电影| 国产精品一区二区在线观看不卡| 久久精品99国产精品日本| 亚洲欧洲另类国产综合| 亚洲国产天堂久久综合网| 亚洲激情欧美激情| 久久精品视频在线播放| 欧美体内谢she精2性欧美| 国产精品免费看片| 国产亚洲欧洲997久久综合| 国产亚洲精品v| 影音先锋成人资源站| 伊人成年综合电影网| 亚洲精品国产精品乱码不99 | 亚洲综合国产| 9色国产精品| 久久国产精品久久久久久久久久| 一区二区欧美日韩| 一本大道久久a久久综合婷婷| 一本一本久久| 性欧美18~19sex高清播放| 久久视频在线看| 欧美久久久久久蜜桃| 欧美日韩亚洲一区| 国产精品久久久久久久久免费 | 一本大道久久a久久精二百| 亚洲国产视频直播| 欧美国产另类| 欧美日本一区二区三区| 国产一区二区三区奇米久涩 | 欧美日韩亚洲高清| 欧美日韩精品久久久| 国产精品网站一区| 亚洲国产综合91精品麻豆| 亚洲欧洲精品一区二区三区| 亚洲激情不卡| 久久精品一区二区三区不卡| 亚洲免费视频一区二区| 男人的天堂亚洲在线| 国产一区二区三区精品欧美日韩一区二区三区| 久久精品毛片| 欧美日韩理论| 欧美中文字幕在线播放| 久久久成人精品| 国产日韩一区二区三区在线| 亚洲欧洲精品成人久久奇米网| 欧美一区二区三区在| 亚洲精品国产品国语在线app| 欧美日韩1234| 亚洲高清不卡在线| av不卡在线看| 欧美日韩亚洲国产精品| 在线免费不卡视频| 欧美一区二区成人| 欧美中文字幕不卡| 亚洲国产精品一区二区第一页| 欧美在线影院| 久久不射网站| 欧美体内she精视频在线观看| 一本久道久久综合婷婷鲸鱼| 欧美在线不卡视频| 国产综合网站| 一区二区三区日韩在线观看 | 午夜精品亚洲| 国产视频亚洲|