SIOC 實驗2:Real-Time Clock(RTC)

Slides:



Advertisements
Similar presentations
FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
Advertisements

Chapter 10 馬可夫鏈 緒言 如果讀者仔細觀察日常生活中所發生的 諸多事件,必然會發現有些事件的未來 發展或演變與該事件現階段的狀況全然 無關,這種事件稱為獨立試行過程 (process of independent trials) ;而另一些 事件則會受到該事件現階段的狀況影響。
: Arrange the Numbers ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11481: Arrange the Numbers 解題者:李重儀 解題日期: 2008 年 9 月 13 日 題意: 將數列 {1,2,3, …,N}
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
EBI European Bioinformatics Institute. EBI The European Bioinformatics Institute (EBI) part of EMBL is a centre for research and services in bioinformatics.
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
第二章 太陽能電池的基本原理 及其結構 2-1 太陽能電池的基本原理 2-2 太陽能電池的基本結構 2-3 太陽能電池的製作.
校園線上技術服務之使用意圖與 建置成功因素的研究 2011/04/22 淡江大學 資管所碩二 李依倫 鄭佳容.
 課程網頁 :  講師姓名 : 張苑 ( ㄩㄢˋ ) 瑩  實驗室 : 資電館 734 室 
目的 「升學調查系統」,幫助某一學校調查並記錄 其歷屆畢業生報考研究所的情況、未來提供給 學弟妹作參考,以及學校推廣之相關工作。 功能需求 紀錄並追蹤歷屆畢業生升學的狀態 協助畢業生做升學輔導 未來提供學弟妹作查詢、參考 計算上榜率、前十大學校上榜率.
小綠人行人用交通號誌燈 指導教授:黃朝章 學生:951408陳宜歆 徐祐祥.
指導教授:陳淑媛 學生:李宗叡 李卿輔.  利用下列三種方法 (Edge Detection 、 Local Binary Pattern 、 Structured Local Edge Pattern) 來判斷是否為場景變換,以方便使用者來 找出所要的片段。
: Factstone Benchmark ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: : Factstone Benchmark 解題者:鐘緯駿 解題日期: 2006 年 06 月 06 日 題意: 假設 1960.
1 Advanced Chemical Engineering Thermodynamics Appendix BK The Generalized van der Waals Partition Function.
亂數產生器安全性評估 之統計測試 SEC HW7 姓名:翁玉芬 學號:
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
1.1 電腦的特性 電腦能夠快速處理資料:電腦可在一秒內處理數百萬個 基本運算,這是人腦所不能做到的。原本人腦一天的工 作量,交給電腦可能僅需幾分鐘的時間就處理完畢。 電腦能夠快速處理資料:電腦可在一秒內處理數百萬個 基本運算,這是人腦所不能做到的。原本人腦一天的工 作量,交給電腦可能僅需幾分鐘的時間就處理完畢。
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
互動式醫療諮詢推播系統 Interactive Consultation Push System for Medical Treatment (ICPSMT) 組員: 曹榮晉 賴永斌 賴永斌.
Department of Air-conditioning and Refrigeration Engineering/ National Taipei University of Technology 模糊控制設計使用 MATLAB 李達生.
南投縣社區大學 Excel 實務應用入門 講師 : 林泉成
國立中山大學財產管理系統 線上報廢、盤點系統 總務處保管組 策劃 計算機與網路中心 分析設計 2008/03.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Wireless Protocol Bluetooth
第 5 章 深入 Response 物件 製作. 網頁的轉向與強制輸出 - 讓網頁轉彎的 Redirect 敘述 運用 Response 物件的 Redirect 方法,將瀏覽器顯 示的網頁,導向至其他網頁,語法如下: Response.Redirect 網頁路徑與名稱 此網頁路徑與名稱  若是導向到同一台.
1 數位控制(一) 2 數位控制 課程計畫 課程目標 介紹數位控制理論 與工業界常用之數位控制器比較 實習數位控制器之模擬與設計 課程綱要 Introduction to Digital Control System The z Transform z-Plane Analysis of Discrete-Time.
:Problem D: Bit-wise Sequence ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10232: Problem D: Bit-wise Sequence 解題者:李濟宇 解題日期: 2006 年 4 月 16.
最新計算機概論 第 5 章 系統程式. 5-1 系統程式的類型 作業系統 (OS) : 介於電腦硬體與 應用軟體之間的 程式,除了提供 執行應用軟體的 環境,還負責分 配系統資源。
電子計算機概論電子計算機概論 教科書 計算機概論 Introduction to Computers 原著: Peter Norton 審閱: 陳正雄‧趙立本‧簡文山‧林碧蘭 編譯:普羅數位科技 總審閱:林志敏 NT 590 洽助教.
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
Department of Air-conditioning and Refrigeration Engineering/ National Taipei University of Technology MATLAB 操作與 系統動態模擬 SIMULINK 李達生.
: Ahoy, Pirates! ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11402: Ahoy, Pirates! 解題者:李重儀 解題日期: 2008 年 8 月 26 日 題意:有一個海盜島有 N 個海盜,他們的編號 (id)
Fugacity Coefficient and Fugacity
North Point Government Primary PM School 北角官立下午小學 應用 ‘ 基本能力學生評估 ’ 及 ‘ 網上學與教支援系統 ’ 經驗分享.
鄭瑞興的個人簡介 中山資工所 鄭瑞興.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
教材名稱:網際網路安全之技術及其應用 (編號: 41 ) 計畫主持人:胡毓忠 副教授 聯絡電話: 教材網址: 執行單位: 政治大學資訊科學系.
11 ZIGBEE. 2 Equipment  FT-6200 High-power Zigbee Starter Kit.
資料結構實習-一 參數傳遞.
手機模擬機車事故黑盒子 指導教授 : 姚修慎 教授 李易璋 鍾明哲 黃靖宇.
法律系 系所科助之血淚辛酸史 劉蕙綺. 系上推行困難處 ( 學期初 ) 傳統習慣:法律系以教科書為主 很多老師沒有電子檔案 專、兼任老師使用平台的意願 因老師多為資深老師,因此在使用電腦部 份可能比較需要幫助 通常學生知道訊息的來源是藉由 BBS 或者 是系上的系板,使用意願會降低.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
: Expect the Expected ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11427: Expect the Expected 解題者:李重儀 解題日期: 2008 年 9 月 21 日 題意:玩一種遊戲 (a game.
Chapter 3 Entropy : An Additional Balance Equation
校園網頁整合平台介紹 電算中心綜合業務組. 大綱 設計理念 功能介紹 實做 FAQ 特殊案例 Q&A.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
Introduction to Java Programming Lecture 9 Flow Control : while do-while and for loops II.
What is Computer.
實驗四 4X4矩陣鍵盤實驗 4X4矩陣鍵盤輸入並輸出至七段式顯示器.
網路介紹及其運用 講師陳炯勳. 5-2 IP 協定 ( 一 ) IP 協定運作 (1) – 網路成員:主機 (Host) 與路由器 (Router) – 路由表 – 電報傳輸運作.
概念性產品企劃書 呂學儒 李政翰.
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
資訊教育 吳桂光 東海大學物理系助理教授 Tel: 3467 Office: ST223 Office hour: Tue, Fri. (10-11am)
國立清華大學資訊工程學系 資訊工程系 2009/11/03P-1 Quiz & Solution 09810CS_ Computer Systems & Application Fall.
冷凍空調自動控制 - 系統性能分析 李達生. Focusing here … 概論 自動控制理論發展 自控系統設計實例 Laplace Transform 冷凍空調自動控制 控制系統範例 控制元件作動原理 控制系統除錯 自動控制理論 系統穩定度分析 系統性能分析 PID Controller 自動控制實務.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
Visual C++重點複習.
數字系統與資料表示法 教師: 陳炯勳 數系轉換 r進制數字 稱為 base r或 radix r 有r個計數符號,計數順序逢r歸零(進位) A n A n - 1 ‥‥A 2 A 1 A 0 ﹒A -1 A -2 ‥‥A -m 其中A n 及A.
1 寬頻分碼多重進接無線通訊上 鏈傳收系統之設計與製作 Transceiver System Design and Implementation for WCDMA Uplink Communication 國科會計畫 (1999/8 – 2002/7) 簡介 2004/1.
Microsoft Excel.
二十一世紀數位化公務員應具備數位化基 本能力 一 應了解每日數位媒體所提供的日常數位 資訊的常識(乃至知識)及常使用的標準 化技能 二 搜尋與公務相關的資訊,相關工作資料 庫的能力 三 快速中文輸入的能力.
:Rings and Glue ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10301: Rings and Glue 解題者:施博修 解題日期: 2011 年 5 月 18 日 題意:小約翰有了個大麻煩,他不小心將 rings.
幼兒行為觀察與記錄 第八章 事件取樣法.
1 Chemical and Engineering Thermodynamics Chapter 1 Introduction Sandler.
CH 14-可靠度工程之數學基礎 探討重點 失效時間之機率分配 指數模式之可靠度工程.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
WU-YANG Technology Co., Ltd. SIOC 實驗6:DMA 黃彥翔/陳慶瀚 MIAT實驗室.
Presentation transcript:

SIOC 實驗2:Real-Time Clock(RTC) 李怡臻 /陳慶瀚 MIAT實驗室 中央大學資訊工程 學系

實驗目的 了解Real Time Clock(RTC)硬體控制原理 了解STM32的RTC控制器driver設計及應用

RTC原理 RTC是一種提供日期/時間的週邊硬體元件; 常用於嵌入式系統中顯示時間資訊和紀錄事件發生的時間; STM32的RTC硬體位於backup區,一旦系統主電源斷電,RTC仍可藉由輔助電力(例如鈕扣電池)維持運作,因而可實現不中斷的即時時鐘功能。

RTC 硬體架構

RTC 核心 ● 兩個模組:programmable prescaler + programmable counter ● prescaler division factor up to 220 ● 32-bit programmable counter : 如果TR_CLK周期為1秒, 32-bit counter最多可計時至136年 /* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ ● 兩個獨立輸入的clocks: PCLK1 和 RTC ● 三個maskable interrupt: – Alarm interrupt,產生alarm中斷 – Seconds interrupt, 產生最常1秒的週期中斷訊號 – Overflow interrupt, 偵測counter 是否overflow. RTC 主要特徵: 1.除頻最高可除到2^20 /* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ 2.APB1 & RTC core 為兩種可以reset的形式 3.Interrupt line 分為以下三種

RTC Registers

Memory Mapping Table

RTC Control Register high 1. RTC_PRL, RTC_ALR, RTC_CNT, and RTC_DIV=>只能用Backup Domain reset

RTC Control Register low Alarm flag RTC operation OFF Configuration flag Overflow flag Second flag Registers synchronized flag

RTC Counter Register 紀錄計數的秒值 Address offset: 0x18 Reset value: 0x0000 RTC counter register high (RTC_CNTH)

RTC Alarm Register RTC_ALR暫存器存放秒數值,如果RTC_CNT的值與RTC_ALR的值相等,鬧鐘發出中斷訊號(RTC_alarmIT)

RTC Register Mapping

RTC Standard Driver Library

Declaration of RTC peripheral RTC declaration RTC registers

RTC firmware library function

RTC Interrupt Configure Function

RTC_IT in RTC Interrupt Configure Function Example: /* Wait until last write operation on RTC registers is terminated */ RTC_WaitForLastTask(); /* Alarm interrupt enabled */ RTC_ITConfig(RTC_IT_ALR, ENABLE);

RTC EnterConfigure Mode Function 可拿掉 Example: /* Enable the configuration mode */ RTC_EnterConfigMode();

RTC_ExitConfigureMode Function Example: /* Exit the configuration mode */ RTC_ExitConfigMode(); 可拿掉

RTC_GetCounter Function Example: /* Gets the counter value */ u32 RTCCounterValue; RTCCounterValue = RTC_GetCounter();

RTC_SetCounter Function Example: /* Wait until last write operation on RTC registers is terminated */ RTC_WaitForLastTask(); RTC_SetCounter(0xFFFF5555);

RTC_SetPrescaler function Example: /* Wait until last write operation on RTC registers is terminated */ RTC_WaitForLastTask(); /* Sets Prescaler value to 0x7A12 */ RTC_SetPrescaler(0x7A12);

RTC_SetAlarm Function Example: /* Wait until last write operation on RTC registers is terminated */ RTC_WaitForLastTask(); RTC_SetAlarm(0xFFFFFFFA);

RTC_GetFlagStatus Function Example: /* Gets the RTC overflow interrupt status */ FlagStatus OverrunFlagStatus; OverrunFlagStatus = RTC_GetFlagStatus(RTC_Flag_OW);

RTC Clear Flag Function Example: RTC_WaitForLastTask(); /* Wait until last write operation on RTC registers is terminated */ RTC_ClearFlag(RTC_FLAG_OW); /* Clears the RTC overflow flag */

RTC Get Interrupt Status Function /* Gets the RTC Second interrupt status */ ITStatus SecondITStatus; SecondITStatus = RTC_GetITStatus(RTC_IT_SEC);

RTC Clear Interrupt Pending Bit Function Example: RTC_WaitForLastTask(); /* Clears the RTC Second interrupt */ RTC_ClearITPendingBit(RTC_IT_SEC);

實驗

Package description 路徑 C:\Keil\ARM\Examples\ST\STM32F10xFWLib

實驗1– 超級終端機顯示時間 使用RTC second interrupt來產生時間,並用Virtual COM Port 在超級終端機上顯示時間。

嵌入式軟體架構 Embedded Software Side Download Program to the Flash of the STM32F103ZC Connect the EVB and the IOB Use the “Dubond thread” HyperTermainal Software Programming Bootup STM32F10x RCC Configure Waiting to Receive String NVIC Configure GPIO Configure UART Configure RTC Configure Interrupt RTC Interrupt Handler Get Counter Value Change value to time

Development Flow cont. Main() NVIC_Configuration(void) Second Interrupt!! void RTC_IRQHandler(void) { TimeDisplay = 1; } RTC_Configuration(void) Time_Adjust(); Time_Regulate() Time_Show() If(TimeDisplay = =1 ) Time_Display(u32 TimeVar)

RTC Grafcet

NVIC Configure /* NVIC Configure */ void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; #ifdef VECT_TAB_RAM /* Set the Vector Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); NVIC_SetVectorTable(0x08003000, 0x0); #endif /* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Enable the RTC Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }

RTC Configure /* RTC Configure */ void RTC_Configuration(void) { /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); /* Allow access to BKP Domain */ BKP_DeInit(); /* Reset Backup Domain */ RCC_LSEConfig(RCC_LSE_ON); /* Enable LSE */ while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); /* Wait till LSE is ready */ RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /* Select LSE as RTC Clock Source */ RCC_RTCCLKCmd(ENABLE); /* Enable RTC Clock */ RTC_WaitForLastTask(); RTC_WaitForSynchro(); /* Wait for RTC registers synchronization */ RTC_WaitForLastTask(); /* Wait until last write operation on RTC registers has finished */ RTC_ITConfig(RTC_IT_SEC, ENABLE); /* Enable the RTC Second */ RTC_WaitForLastTask(); /* Wait until last write operation on RTC registers is terminated */ /* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ }

Main program /* 超級終端機顯示RTC時間*/ int main(void) { #ifdef DEBUG debug(); #endif NVIC_Configuration(); /* NVIC configuration */ USART_Configuration(); /* Configure the USART1 */ if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) /* Backup data register value is not correct or not yet programmed (when the first time the program is executed) */ printf("\r\n\n RTC not yet configured...."); RTC_Configuration(); /* RTC Configuration */ printf("\r\n RTC configured...."); Time_Adjust(); /* Adjust time by values entred by the user on the hyperterminal */ BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); }

/* 續上頁*/ else { /* Check if the Power On Reset flag is set */ if(RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) printf("\r\n\n Power On Reset occurred...."); else if(RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) printf("\r\n\n External Reset occurred...."); printf("\r\n No need to configure RTC...."); RTC_WaitForSynchro(); /* Wait for RTC registers synchronization */ RTC_ITConfig(RTC_IT_SEC, ENABLE); /* Enable the RTC Second */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); } RCC_ClearFlag(); /* Clear reset flags */ while(1) Time_Show();

Time_Regulate( ) & Time_Adjust( ) function u32 Time_Regulate(void) { u32 Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF; Tmp_HH =0; Tmp_MM = 0; Tmp_SS = 0; * /* Return the value to store in RTC counter register */ return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS)); } void Time_Adjust(void) RTC_WaitForLastTask(); RTC_SetCounter(Time_Regulate()); /* Change the current time */

Time_Display( ) & Time_Show( ) function void Time_Display(u32 TimeVar) { u32 THH = 0, TMM = 0, TSS = 0; THH = TimeVar / 3600; /* Compute hours */ TMM = (TimeVar % 3600) / 60; /* Compute minutes */ TSS = (TimeVar % 3600) % 60; /* Compute seconds */ printf("Time: %0.2d:%0.2d:%0.2d\r", THH, TMM, TSS); } void Time_Show(void) printf("\n\r"); while (1) /* Infinite loop */ { if (TimeDisplay == 1) /* If 1s has paased */ { Time_Display(RTC_GetCounter()); /* Display current time */ TimeDisplay = 0; } }

RTC Interrupt Handler <stm32f10x_it.c> /* Interrupt Handler*/ void RTC_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_SEC) != RESET) RTC_ClearITPendingBit(RTC_IT_SEC); /* Clear the RTC Second interrupt */ TimeDisplay = 1; /* Enable time update */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Reset RTC Counter when Time is 23:59:59 */ if (RTC_GetCounter() == 0x00015180) RTC_SetCounter(0x0); } /* Interrupt Handler*/

LAB1 DEMO HyperTermainal Output Print time Hour: Minuets: Second

利用 RTC second interrupt來產生時間,並用Virtual COM Port 在超級終端機上顯示時間。 請修改u32 Time_Regulate(void) ,讓使用者自行輸入現在時間, 使用printf()與scanf() 。

Sample code u32 Time_Regulate(void) { u32 Tmp_HH = 0xFF, Tmp_MM = 0xFF, Tmp_SS = 0xFF; /* modify your code Tmp_HH =0; Tmp_MM = 0; Tmp_SS = 0; */ * /* Return the value to store in RTC counter register */ return((Tmp_HH*3600 + Tmp_MM*60 + Tmp_SS)); } void Time_Adjust(void) RTC_WaitForLastTask(); /* Wait until last write operation has finished */ RTC_SetCounter(Time_Regulate()); /* Change the current time */ RTC_WaitForLastTask(); /* Wait until last write operationhas finished */

LAB2 DEMO

實驗3 – RTC Alarm Interrupt 請參考RTC second interrupt 的使用方式,修改 void RTC_Configuration(void) void Time_Adjust(void) void RTC_IRQHandler(void)

RTC Configure /* RTC Configure */ /* Enable the RTC Second */ RTC_ITConfig(RTC_IT_ALR, ENABLE ); /* Wait until last write operation on RTC registers is finished */ RTC_WaitForLastTask();

Time Adjust void Time_Adjust(void) { RTC_WaitForLastTask(); /* Wait until last write operation on RTC registers has finished */ RTC_SetCounter(Time_Regulate()); /* Change the current time */ /* modify your code   RTC_SetAlarm(0x10);   RTC_WaitForLastTask(); */ }

RTC Interrupt Handler /* Interrupt Handler */ void RTC_IRQHandler(void) { if (RTC_GetITStatus(RTC_IT_SEC) != RESET) { RTC_ClearITPendingBit(RTC_IT_SEC); /* Clear RTC Second interrupt */ TimeDisplay = 1; /* Enable time update */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); /* Reset RTC Counter when Time is 23:59:59 */ if (RTC_GetCounter() == 0x00015180) { RTC_SetCounter(0x0); } /* modify your code if(RTC_GetITStatus(RTC_IT_ALR) != RESET){ ………… } */

LAB3 DEMO