電子時鐘制作(瑞薩RA)(6)----配置RTC時鐘及顯示時間
概述
本文將詳細(xì)講解如何借助e2studio來對瑞薩微控制器進(jìn)行實時時鐘(RTC)的設(shè)置和配置,以便實現(xiàn)日歷功能和一秒鐘產(chǎn)生的中斷,從而通過串口輸出實時數(shù)據(jù)。 實時時鐘(RTC)模塊是一種時間管理外設(shè),主要用于記錄和控制日期和時間。與常見的微控制器(MCU)中的定時器不同,RTC時鐘提供了兩種計時方式:日期模式和計時模式。RTC時鐘的常用功能包括設(shè)置時間、設(shè)定鬧鐘、配置周期性中斷以及啟動或停止操作。 通過使用e2studio工具,我們可以輕松地對瑞薩微控制器進(jìn)行RTC配置,從而實現(xiàn)高精度的時間和日期管理。在本文中,我們將重點(diǎn)討論如何設(shè)置RTC時鐘日歷和產(chǎn)生一秒鐘的中斷,使得串口能夠?qū)崟r打印數(shù)據(jù)。
硬件準(zhǔn)備
首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是芯片型號R7FA2E1A72DFL的開發(fā)板:

?

視頻教程
https://www.bilibili.com/video/BV1Cz4y1n7rw/

RTC配置
點(diǎn)擊Stacks->New Stack->Timers -> Realtime Clock(r_rtc)。?

RTC屬性配置

其中LOCO為內(nèi)部低速時鐘,需要準(zhǔn)確定時還是需要外部低速晶振Sub-clock。?

?

設(shè)定時間
在啟動RTC后,需要為其設(shè)定當(dāng)前時間。您可以使用R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time)函數(shù)來實現(xiàn)這一目標(biāo)。具體的時間參數(shù)可以通過修改set_time變量來調(diào)整。?


設(shè)定周期性中斷
如果您想要使用RTC實現(xiàn)固定延遲中斷,可以通過R_RTC_PeriodicIrqRateSet(rtc_ctrl_t *const p_ctrl, rtc_periodic_irq_select_t const rate)函數(shù)來實現(xiàn)。例如,要設(shè)置1秒的周期性中斷,您可以使用如下代碼: R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND); 每次周期性中斷產(chǎn)生時,系統(tǒng)將觸發(fā)回調(diào)函數(shù)的事件RTC_EVENT_PERIODIC_IRQ。
設(shè)定日歷鬧鐘時間
在啟動RTC后,您可以設(shè)置日歷鬧鐘時間。通過使用R_RTC_CalendarAlarmSet(&g_rtc0_ctrl, &set_alarm_time)函數(shù),可以設(shè)定鬧鐘時間。具體的時間參數(shù)可以通過修改set_alarm_time變量來調(diào)整。具體設(shè)置方法如下。 在這個示例中,我們僅設(shè)置了sec_match為1,因此每隔一分鐘,當(dāng)秒數(shù)達(dá)到5秒時,鬧鐘都會觸發(fā)。如果要實現(xiàn)每天只響鈴一次的功能,需要同時將min_match和hour_match設(shè)置為1。

回調(diào)函數(shù)
可以觸發(fā)進(jìn)入回調(diào)函數(shù)的事件如下所示,RTC_EVENT_PERIODIC_IRQ為設(shè)置的實時性事件,例如1s一次,RTC_EVENT_ALARM_IRQ為鬧鐘事件。?


?同時在主程序中開啟RTC已經(jīng)設(shè)置時間和鬧鐘。

?同時在主函數(shù)的while循環(huán)中添加打印和中斷處理,以及當(dāng)前時間顯示。

為了快速啟動,關(guān)閉數(shù)碼管測試。?

演示效果
設(shè)置每過1s打印一次當(dāng)前時間,設(shè)置過1分鐘,在10秒時候鬧鈴。?

更換日期顯示。?

數(shù)碼管顯示日期
可以在主程序里面添加顯示,讓數(shù)碼管顯示日期。

主程序