新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 瑞薩RA0單片機(jī)連載之九?RTC

瑞薩RA0單片機(jī)連載之九?RTC

作者:lulugl 時(shí)間:2025-06-27 來(lái)源:EEPW 收藏


本文引用地址:http://www.2s4d.com/article/202506/471810.htm

RA0E1的RTC(Real Time Clock) 外設(shè), 實(shí)質(zhì)是一個(gè)掉電后還繼續(xù)運(yùn)行的定時(shí)器。RA0E1 的實(shí)時(shí)時(shí)鐘(RTC)有兩種計(jì)數(shù)模式:日歷計(jì)數(shù)模式、二進(jìn)制計(jì)數(shù)模式,可以通過(guò)寄存器的設(shè)置來(lái)切換模式。對(duì)于日歷計(jì)數(shù)模式,RTC 具有從2000 年到2099 年的100年日歷,并自動(dòng)調(diào)整閏年的日期。對(duì)于二進(jìn)制計(jì)數(shù)模式,RTC計(jì)數(shù)秒,并保留信息作為串行值。二進(jìn)制計(jì)數(shù)模式可用于公歷(西歷)以外的日歷。

本篇主要介紹如何使用RASC配置RTC,并使用RTC中斷來(lái)更新時(shí)間,在OLED中顯示實(shí)時(shí)時(shí)間。

1.打開(kāi)RASC配置工具,新增一個(gè)stack:

1751028808450069.png

2.在g_rtc屬性中,配置他為g_rtc0,開(kāi)啟中斷,并設(shè)置中斷函數(shù)為rtc_callback,中斷級(jí)別為Priority3

1751028841453625.png

3.保存配置并重新生成代碼。

4.添加drv_rtc.c/h

在drv_rtc.c中添加代碼如下:

image.png

image.png

本函數(shù)為初始化RTC,先定義一個(gè)Settime 結(jié)構(gòu)體,將需要初始化的年月日時(shí)分秒以及星期添calendarTimeSet來(lái)設(shè)置時(shí)間。

使用periodicIrqRateSet 設(shè)置一個(gè)1 秒的中斷。

view plaincopy to clipboardprint?

1. void rtc_callback(rtc_callback_args_t * p_args)

2. {

3.    if(RTC_EVENT_PERIODIC_IRQ == p_args->event)

4.     {

5.     /* 若是周期中斷,獲取日期*/

6.     gRtcPeriodFlag = true;

7.         g_rtc0.p_api->calendarTimeGet(g_rtc0.p_ctrl, (rtc_time_t*)&gCurTime);

8.     }

9. }

在回調(diào)函數(shù)中,更新獲取時(shí)間標(biāo)志,并把當(dāng)前時(shí)間讀取到gCurTime中。

同時(shí)我們開(kāi)放一個(gè)RTCDrvGetTime函數(shù),用于返回時(shí)間。

view plaincopy to clipboardprint?

1. int RTCDrvGetTime(rtc_time_t *time)

2. {

3.     if(RTCDrvWaitPeriodInt())

4.     {

5.         *time = gCurTime;

6.         return true;

7.     }

8.     return false;

9. }

1   測(cè)試

在主函數(shù)中,先初始化RTC,然后在大循環(huán)中獲取時(shí)間,并更新到OLED屏上:

1751028934594806.png

2   總結(jié)

的RASC可以方便的配置外設(shè),本實(shí)驗(yàn)采用面向?qū)ο蟮木幊趟枷雭?lái)驅(qū)動(dòng)RTC,實(shí)現(xiàn)了1秒的中斷,在回調(diào)中獲取當(dāng)時(shí)間,并實(shí)時(shí)更新到OLED屏上。

實(shí)驗(yàn)現(xiàn)象:

1751028981172151.png

(本文來(lái)源于《EEPW》



關(guān)鍵詞: 202506 瑞薩 RA0單片機(jī)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉