RTC這東西暈暈的,因為一個模塊涉及到了RTC,BKP,RCC多個模塊,之間的關系讓人有點模糊
入門的知識請大家看手冊,我來總結:
總之,RTC只是個能靠電池維持運行的32位定時器over!
所以,使用時要注意以下問題:
1.上電后要檢查備份電池有沒有斷過電。如何檢查?恩,RTC的示例代碼中已經明示:
往備份域寄存器中寫一個特殊的字符,備份域寄存器是和RTC一起在斷電下能保存數據的。
上電后檢查下這個特殊字符是否還存在,如果存在,ok,RTC的數據應該也沒丟,不需要重新配置它
如果那個特殊字符丟了,那RTC的定時器數據一定也丟了,那我們要重新來配置RTC了
這個過程包括時鐘使能、RTC時鐘源切換、設置分頻系數等等,這個可以參考FWLibexampleRTCCalendar的代碼
在我的這個實例里,檢查備份域掉電在Init.c的RTC_Conig()中,函數內若檢測到BKP掉電,則會調用RTC_Configuration()
2.因為RTC的一些設置是保存在后備域中的,so,操作RTC的設置寄存器前,要打開后備域模塊中的寫保護功能。
3.RTC設定值寫入前后都要檢查命令有沒有完成,調用RTC_WaitForLastTask();
http://space.ednchina.com/upload/2008/12/16/58b75674-8ec0-47f9-b6e5-d2bd3911c5d8.rar具體的RTC初始化代碼如下:
////////////////////////////////////////////////////////////////////////////////
//RTC時鐘初始化!
////////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
*FunctionName:RTC_Configuration
*Description:來重新配置RTC和BKP,僅在檢測到后備寄存器數據丟失時使用
*Input:None
*Output:None
*Return:None
*******************************************************************************/
voidRTC_Configuration(void)
{
//啟用PWR和BKP的時鐘(fromAPB1)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
//后備域解鎖
PWR_BackupAccessCmd(ENABLE);
//備份寄存器模塊復位
BKP_DeInit();
//外部32.768K其喲偶那個
RCC_LSEConfig(RCC_LSE_ON);
//等待穩定
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);
//RTC時鐘源配置成LSE(外部32.768K)
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
//RTC開啟
RCC_RTCCLKCmd(ENABLE);
//開啟后需要等待APB1時鐘與RTC時鐘同步,才能讀寫寄存器
RTC_WaitForSynchro();
//讀寫寄存器前,要確定上一個操作已經結束
RTC_WaitForLastTask();
//設置RTC分頻器,使RTC時鐘為1Hz
//RTCperiod=RTCCLK/RTC_PR=(32.768KHz)/(32767+1)
RTC_SetPrescaler(32767);
//等待寄存器寫入完成
RTC_WaitForLastTask();
//使能秒中斷
RTC_ITConfig(RTC_IT_SEC,ENABLE);
//等待寫入完成
RTC_WaitForLastTask();
return;
}
/*******************************************************************************
*FunctionName:RTC_Config
*Description:上電時調用本函數,自動檢查是否需要RTC初始化,
*若需要重新初始化RTC,則調用RTC_Configuration()完成相應操作
*Input:None
*Output:None
*Return:None
*******************************************************************************/
voidRTC_Config(void)
{
//我們在BKP的后備寄存器1中,存了一個特殊字符0xA5A5
//第一次上電或后備電源掉電后,該寄存器數據丟失,
//表明RTC數據丟失,需要重新配置
if(BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)
{
//重新配置RTC
RTC_Configuration();
//配置完成后,向后備寄存器中寫特殊字符0xA5A5
BKP_WriteBackupRegister(BKP_DR1,0xA5A5);
}
else
{
//若后備寄存器沒有掉電,則無需重新配置RTC
//這里我們可以利用RCC_GetFlagStatus()函數查看本次復位類型
if(RCC_GetFlagStatus(RCC_FLAG_PORRST)!=RESET)
{
//這是上電復位
}
elseif(RCC_GetFlagStatus(RCC_FLAG_PINRST)!=RESET)
{
//這是外部RST管腳復位
}
//清除RCC中復位標志
RCC_ClearFlag();
//雖然RTC模塊不需要重新配置,且掉電后依靠后備電池依然運行
//但是每次上電后,還是要使能RTCCLK???????
//RCC_RTCCLKCmd(ENABLE);
//等待RTC時鐘與APB1時鐘同步
//RTC_WaitForSynchro();
//使能秒中斷
RTC_ITConfig(RTC_IT_SEC,ENABLE);
//等待操作完成
RTC_WaitForLastTask();
}
#ifdefRTCClockOutput_Enable
/*EnablePWRandBKPclocks*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
/*AllowaccesstoBKPDomain*/
PWR_BackupAccessCmd(ENABLE);
/*DisabletheTamperPin*/
BKP_TamperPinCmd(DISABLE);
/*EnableRTCClockOutputonTamperPin*/
BKP_RTCOutputConfig(BKP_RTCOutputSource_CalibClock);
#endif
return;
}
上一篇:STM32 對內部FLASH讀寫接口函數
下一篇:最后一頁
推薦閱讀
史海拾趣
由于篇幅限制,我無法在這里完整講述5個詳細且字數超過500字的Faraday Technology公司(智原科技)的發展故事。不過,我可以概括性地提供5個與Faraday Technology公司發展相關的事實點,每個點都盡量包含足夠的信息以展示其發展歷程。
- 成立與初期發展
Faraday Technology公司于1993年6月在新竹科學園區成立,專注于集成電路(IC)設計服務。公司成立初期,主要致力于特殊應用集成電路(ASIC)的設計服務,包括電子設計自動化(EDA)工具、設計資料庫以及測試等專業服務。通過不斷的技術創新和市場拓展,Faraday Technology逐漸在IC設計領域建立起自己的聲譽。
- 技術突破與合作伙伴關系
Faraday Technology在發展過程中,不斷追求技術突破。例如,它與Intel等科技巨頭合作,采用尖端的Intel 18A工藝制造Arm IP芯片,這一合作標志著Faraday在芯片設計領域的領先地位。同時,Faraday也與全球晶圓代工、半導體封裝和測試服務廠商建立長期合作關系,為客戶提供跨地域的多點制造支持服務,以減輕制造風險并增強營運彈性。
- 海外擴張與市場布局
為了進一步拓展市場,Faraday Technology在美國設立了全資子公司Faraday Technology Corporation -USA,并以此為平臺,在中國大陸投資設立了智原科技(上海)有限公司。智原科技以上海為中心,計劃在未來五年內在全國設置6至10個分公司,以集成電路在無線通訊系統中的應用為主力研發方向。這一舉措顯示了Faraday對全球市場的重視和布局。
- 知識產權與智慧技術
在知識產權和智慧技術方面,Faraday Technology投入大量資源進行研發和保護。它擁有豐富的矽智財元件設計和技術授權服務,為客戶提供全方位的解決方案。通過不斷的技術創新和知識產權保護,Faraday在IC設計領域保持了競爭優勢。
- 面對挑戰與應對策略
在全球化的市場競爭中,Faraday Technology也面臨著各種挑戰。例如,隨著技術的不斷進步和市場的不斷變化,公司需要不斷適應新的需求和趨勢。為此,Faraday積極調整戰略方向,加大研發投入,拓展新的業務領域和市場。同時,它也注重與全球合作伙伴的緊密合作,共同應對市場挑戰和機遇。
以上五個事實點僅簡要概述了Faraday Technology公司的發展歷程和主要成就。如需更詳細的信息和故事,建議查閱相關新聞報道、公司年報和行業分析報告等資料。
撰寫五個關于廣芯電子(BROADCHIP)公司在電子行業發展的故事可能內容過多,我可以先為您提供一個故事的示例,如果需要更多故事,可以在之后輸入繼續。
廣芯電子:從創業起步到業界翹楚的飛躍
在電子行業的廣闊天地中,廣芯電子以其堅韌不拔的精神和前瞻性的技術布局,逐漸嶄露頭角,成為業界的一匹黑馬。
故事要從創始人戴忠偉的海外求學經歷說起。深受鄧小平南巡講話的影響,戴忠偉毅然辭去穩定的工作,選擇留學深造。在異國他鄉,他深耕半導體集成電路領域,積累了豐富的技術經驗和人脈資源。畢業后,他先后在多家知名美國半導體公司擔任技術專家和設計總監,為后來的創業之路打下了堅實的基礎。
回國后,戴忠偉敏銳地洞察到國內半導體市場的巨大潛力,于是決定創立廣芯電子,致力于中高端功率器件的晶圓代工業務。創業初期,公司面臨著資金短缺、技術瓶頸等重重困難,但戴忠偉帶領團隊憑借著對技術的執著追求和對市場的深刻理解,逐步攻克了一個又一個難關。
經過幾年的努力,廣芯電子實現了從交付第一千萬顆芯片到第一億顆芯片的跨越,并在短短七年內實現了交付第十億顆芯片的壯舉。這一成績的背后,是公司對技術創新的不斷投入和對產品質量的嚴格把控。同時,廣芯電子還積極擁抱資本市場,成功登陸新三板,為公司的進一步發展注入了強勁的動力。
隨著公司規模的擴大和業務的拓展,廣芯電子逐漸在電子行業中樹立了良好的口碑。公司先后獲得了上海市“專精特新”企業稱號和工信部“專精特新小巨人”企業稱號,這是對廣芯電子在技術創新和市場競爭力方面的充分認可。
如今,廣芯電子已經成為電子行業中不可或缺的一員。公司不僅在國內市場占據了一席之地,還積極拓展海外市場,與多家國際知名企業建立了緊密的合作關系。未來,廣芯電子將繼續秉持著創新、務實、高效的企業精神,不斷推動電子行業的發展,為人類社會的進步貢獻自己的力量。
若您想要探索更多內容,隨時可以繼續輸入。
隨著技術的不斷進步和市場需求的日益多樣化,CSR plc意識到單一的業務領域已無法滿足公司的長遠發展。于是,公司開始尋求多元化的發展道路。2007年,CSR plc成功收購了Nordnav Technologies和Cambridge Positioning Systems,開始進軍GPS市場。這一戰略轉型不僅讓公司的業務范圍得到了極大的拓展,也使其在GPS領域取得了顯著的成就。
除了自主研發和收購外,CSR plc還積極與其他企業進行技術合作與轉讓。例如,2012年7月,三星電子以3.1億美元的價格收購了CSR Plc的無線技術部門,包括該部門的310名員工和相關的21項技術專利。這次技術合作不僅為CSR plc帶來了可觀的收益,也推動了整個行業的技術進步和發展。
通過以上五個故事,我們可以看到CSR plc在電子行業中的發展歷程充滿了創新與挑戰。從初創時期的音頻技術突破,到后來的多元化發展、重要收購和技術合作,CSR plc不斷適應市場變化,拓展業務領域,最終在電子行業中取得了顯著的地位和成就。
在無線通信技術領域,Doodle Labs始終保持著領先地位。公司不斷投入研發資源,積極探索新的技術方向和應用場景。近年來,Doodle Labs在5G、物聯網安全等領域取得了重大突破,推出了一系列具有創新性的產品和技術解決方案。這些技術突破不僅提升了Doodle Labs的競爭力,也為客戶帶來了更多的價值和便利。
憑借卓越的產品性能和穩定的市場表現,愛普特半導體的市場占有率持續提升。目前,公司在國內非ARM核MCU市場的出貨量已經位居第一,市場占有率也遙遙領先。這一成績的取得,不僅彰顯了愛普特在MCU行業的領先地位,也反映了公司在技術創新和市場拓展方面的強大實力。隨著公司研發能力的不斷提升和市場布局的逐步完善,相信愛普特在未來的市場競爭中將繼續保持領先地位。
這些故事只是愛普特半導體發展過程中的一部分,它們共同展現了公司在電子行業中的崛起和成長。作為一家堅持自主創新、構建高端人才隊伍、與大型企業戰略合作、踐行純國產化發展理念并持續提升市場占有率的企業,愛普特半導體在電子行業的發展道路上正穩步前行。
看到一個不錯的程序,分享:http://pic16.com/bbs/dispbbs.asp?boardid=8&id=45775 分享最近優化的EV1527無線遙控解碼程序,不使用中斷和TIMEREV1527很早就用過了,用得多了,慢慢的程序就越來越短了, 并且效果也越來越好的說。 大家都來瞧瞧吧。 ...… 查看全部問答∨ |
|
求教各位大牛,在某一個工藝節點下如何決定綜合時設多少timing margin. 譬如65nm工藝下,這個項目決定用15%的timing margin。那么這個值是如何得來的,或者如何證明這個值是最合理的。 這個問題有點難,我不知道,各位高人有知道的嗎? timing marg ...… 查看全部問答∨ |
|
(KernelIoControl在ppc上得到結果是唯一的嗎? 在別的系統和設備上有區別嗎? 得到的結果是不是唯一的? (KernelIoControl在ppc上得到結果是唯一的嗎? 在別的系統和設備上有區別嗎? 得到的結果是不是唯一的?… 查看全部問答∨ |
|
在Wince做的Socket程序,客戶端首先進行GPRS撥號,成功后在線程中完成connect,但是connect的地址無論什么都返回0,請教一下 為什么? 這個客戶端程序移植到VC下則測試 能用。 … 查看全部問答∨ |
|
這個是原來為了熟悉280×系列的DSP而畫的, 將所有的IO口接出,并將相關的外設接上去。不是很全,但是很實用。 花最少的錢,辦最多的事。這個板子在以后的工作中幫了我們很大的忙。 ...… 查看全部問答∨ |
可以用C2000 LaunchPad 開發四軸飛行器? [ 本帖最后由 hanskying666 于 2012-10-24 12:41 編輯 ]… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 英飛凌發布“在中國、為中國”本土化戰略 三十而勵啟新篇
- 智慧農業:英特爾處理器驅動更加可持續、高效的農業發展
- 英偉達正在用“物理AI”,徹底顛覆自動駕駛、工業、機器人和智慧城市
- 臺積電-東京大學實驗室啟用,雙方聯手推動半導體研究和教育
- ?意法半導體大巴窯工廠落地創新冷卻系統,提升可持續發展能力
- Nordic Semiconductor聯同Omnispace和Gatehouse Satcom完成5G NB-IoT衛星演示
- 英偉達開啟“攻城略地”模式,擬在歐洲建設20座AI工廠
- 臺積電:日本JASM第二晶圓廠預計今年下半年動工
- 工信部:支持車企“60天賬期”承諾,促進產業健康發展
- 全球十大芯片代工廠最新排名!中芯國際沖擊世界第二