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

淺談STM32F10X芯片RTC實(shí)時時鐘

2015-11-03
關(guān)鍵詞: RTC STM32F10x

1、介紹

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

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

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

2、RTC注意事項(xiàng)

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

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

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

l         RTC中的任何標(biāo)志位都將保持掛起狀態(tài)(因?yàn)镺WF、ALRF、SECF和RSF只能由硬件置位由軟件清零),直到適當(dāng)?shù)腞TC_CR請求位被軟件復(fù)位,表示所有請求的中斷已經(jīng)被接受;

l         若ALRF=1且ALRIE=1,則允許產(chǎn)生RTC全局中斷,如果EXTI控制器中允許產(chǎn)生EXTI線17中斷,則允許產(chǎn)生RTC全局中斷和RTC鬧鐘中斷,在這種情況下,一般設(shè)置鬧鈴中斷優(yōu)先級高于全局中斷,如果全局中斷優(yōu)先級高于鬧鈴中斷,則在全局中斷中必須清除鬧鐘中斷標(biāo)志之后,才能進(jìn)入鬧鐘中斷處理函數(shù)進(jìn)一步處理(因?yàn)椴磺宄龢?biāo)志,則會一直引發(fā)中斷,而全局中斷優(yōu)先級高,就會一直在全局中斷中無法跳出來);

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

l         當(dāng)APB1時鐘不運(yùn)行時,OWF、ALRF、SECF和RSF位不被更新;

l         系統(tǒng)復(fù)位時禁止所有中斷,無掛起中斷請求,可以對RTC寄存器進(jìn)行寫操作;

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

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

         等待RTC控制寄存器中秒標(biāo)志SECF置位,再更改RTC鬧鐘和/或RTC計數(shù)器。

 

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

 

3、RTC寄存器描述

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

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

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

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

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

與RTC相關(guān)的寄存器有:

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

l         電源控制寄存器PWR_CR的后備區(qū)域保護(hù)位:DBP

4、RTC配置流程

?         配置RCC:選擇系統(tǒng)時鐘、配置總線時鐘、使能外圍設(shè)備時鐘等;

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

?         調(diào)用PWR_BackupAccessCmd(ENABLE)獲取后備區(qū)域訪問權(quán)限;

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

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

?         RTC配置:

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

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

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

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

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

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

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

?         編寫中斷處理函數(shù):注意一定要在中斷處理函數(shù)中調(diào)用RTC_ClearITPendingBit()函數(shù)清除對應(yīng)的中斷標(biāo)志位;

5、RTC配置實(shí)例

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);

/* 設(shè)置鬧鐘中斷優(yōu)先級高于全局中斷 */

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);

}

/* 中斷處理函數(shù) */

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); /* 清除中斷標(biāo)志位,包括外部中斷線標(biāo)志 */

if(EXTI_GetITStatus(EXTI_Line17));

{

EXTI_ClearITPendingBit(EXTI_Line17);

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

}

}

}

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美片在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 久久精品五月| 欧美一区不卡| 亚洲永久字幕| 亚洲欧美韩国| 亚洲欧美另类中文字幕| 亚洲午夜电影| 亚洲欧美精品suv| 亚洲特级毛片| 亚洲免费在线播放| 亚洲小视频在线观看| 亚洲小视频在线| 亚洲与欧洲av电影| 亚洲男女毛片无遮挡| 午夜日韩在线| 久久精品亚洲热| 久久综合国产精品台湾中文娱乐网| 久久精品免视看| 另类欧美日韩国产在线| 蜜臀a∨国产成人精品| 猛干欧美女孩| 欧美精品在线免费播放| 欧美日韩三级电影在线| 欧美视频福利| 国产欧美一区二区三区另类精品| 国产欧美日韩另类一区| 韩国女主播一区二区三区| 136国产福利精品导航网址| 亚洲激情视频在线播放| 99成人精品| 亚洲欧美日韩系列| 亚洲国产成人精品视频| 亚洲伦伦在线| 9人人澡人人爽人人精品| 亚洲香蕉成视频在线观看 | 久久精品综合网| 免费成人网www| 欧美日韩亚洲免费| 国产精品视频成人| 一区二区三区在线观看国产| 亚洲精品三级| 亚洲欧美在线网| 亚洲欧洲精品成人久久奇米网| 亚洲视频观看| 久久九九久精品国产免费直播| 欧美成人tv| 国产精品萝li| 在线观看欧美日韩国产| 99在线精品观看| 欧美在线地址| 在线视频精品一区| 久久久91精品国产一区二区三区| 欧美jizzhd精品欧美喷水 | 国产欧美韩国高清| 亚洲国产成人久久| 亚洲男人的天堂在线观看| 亚洲国产日韩欧美在线图片| 亚洲午夜精品在线| 久久婷婷久久一区二区三区| 欧美日韩一级大片网址| 国内精品一区二区三区| 日韩一级免费观看| 亚洲成人资源网| 亚洲无线视频| 欧美a级一区二区| 国产欧美日韩精品一区| 亚洲美女在线国产| 久久精品五月| 香蕉久久一区二区不卡无毒影院| 免费一区视频| 国产日本欧美在线观看| 亚洲精品婷婷| 久久精品亚洲精品| 亚洲欧美日韩国产中文| 欧美粗暴jizz性欧美20| 国产色产综合产在线视频| 99成人精品| 亚洲人屁股眼子交8| 久久激情网站| 国产精品久久久久久久一区探花 | 裸体女人亚洲精品一区| 国产精品国产三级国产普通话三级 | 亚洲影视综合| 欧美激情一区二区三区不卡| 国产午夜精品麻豆| 亚洲香蕉视频| 在线午夜精品自拍| 欧美不卡三区| 国产综合一区二区| 亚洲欧美综合网| 亚洲专区在线| 欧美日韩精品三区| 最新69国产成人精品视频免费| 欧美在线一二三四区| 午夜在线视频一区二区区别| 欧美日韩色婷婷| 亚洲精品1区| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久午夜视频| 国产午夜精品久久久久久久| 亚洲一区在线直播| 亚洲欧美日本国产专区一区| 欧美日韩视频第一区| 亚洲理伦在线| 一区二区三区日韩| 欧美日韩精品一区二区天天拍小说 | 99riav1国产精品视频| 免费国产自线拍一欧美视频| 国产在线欧美| 久久成年人视频| 久久一区二区三区av| 黄色成人免费网站| 久久国产色av| 久久影院午夜论| 在线欧美日韩| 亚洲精品日韩在线| 欧美激情第9页| 亚洲精品激情| 一区二区三区四区国产精品| 欧美日韩在线第一页| 中文欧美字幕免费| 午夜精品福利视频| 国产欧美精品国产国产专区| 欧美一区1区三区3区公司| 久久久99国产精品免费| 狠狠综合久久av一区二区小说| 亚洲黄色成人久久久| 欧美精品 国产精品| 日韩小视频在线观看专区| 9色porny自拍视频一区二区| 欧美日韩在线精品| 亚洲在线日韩| 久久精品五月| 亚洲国产精品高清久久久| 99精品视频免费在线观看| 欧美日韩亚洲一区三区| 亚洲视频网在线直播| 欧美一区二区私人影院日本| 国产一区二区在线观看免费播放 | 亚洲小视频在线观看| 国产精品亚洲成人| 欧美一级视频精品观看| 麻豆视频一区二区| 亚洲美女在线国产| 欧美一区二区视频在线观看2020 | 久久久久国产成人精品亚洲午夜| 在线观看成人小视频| 一本大道久久a久久精二百| 国产精品欧美风情| 久久精品国产99国产精品澳门| 欧美激情 亚洲a∨综合| 中国日韩欧美久久久久久久久| 欧美一区二区三区啪啪| 伊人精品视频| 亚洲视频欧洲视频| 国产自产女人91一区在线观看| 亚洲青色在线| 国产精品黄色| 亚洲电影欧美电影有声小说| 欧美日韩黄视频| 欧美一区二区三区电影在线观看| 欧美成人精品不卡视频在线观看| 中文国产一区| 六十路精品视频| 中文av字幕一区| 久久免费视频网站| 9人人澡人人爽人人精品| 久久久久国产精品午夜一区| 亚洲日本理论电影| 欧美在线免费播放| 亚洲蜜桃精久久久久久久| 久久精品国产99| 亚洲日本免费| 久久久蜜桃一区二区人| 日韩午夜免费| 久热精品视频在线观看| 在线视频亚洲欧美| 久热爱精品视频线路一| 亚洲色诱最新| 欧美成人午夜激情视频| 亚洲欧美国产高清va在线播| 欧美精彩视频一区二区三区| 欧美一区二区三区在| 欧美午夜一区| 亚洲精品国产系列| 国产偷国产偷亚洲高清97cao| 在线亚洲+欧美+日本专区| 好吊色欧美一区二区三区视频| 亚洲一区二区三区中文字幕在线 | 亚洲视频中文| 欧美电影在线播放| 午夜亚洲影视| 国产精品久久久久久久久搜平片| 亚洲精品视频一区| 狠色狠色综合久久| 久久国产免费看| 亚洲一区二区在线观看视频| 欧美日本一区| 亚洲精品在线一区二区|