來(lái)源:strongerHuang
RTC:Real Time Clock,實(shí)時(shí)時(shí)鐘。
以前做項(xiàng)目要用時(shí)鐘,都是外掛一個(gè)時(shí)鐘芯片,隨著需求的增長(zhǎng)和技術(shù)的發(fā)展,很多MCU內(nèi)部都集成了RTC(實(shí)時(shí)時(shí)鐘)這個(gè)模塊。
本文結(jié)合e2 studio開發(fā)環(huán)境、RA8D1單片機(jī)給大家描述RTC這個(gè)模塊的使用方法。
準(zhǔn)備工作
1下載并安裝e2studio工具
下載地址,推薦瑞薩官方的GitHub:
GitHub
https://github.com/renesas/fsp/releases
我們這里以瑞薩RA8D1單片機(jī)為例(當(dāng)然,其實(shí)RA系列單片機(jī)也類似):

e2 studio配置RTC模塊
本文基于e2studio開發(fā)環(huán)境、RA8D1單片機(jī),實(shí)現(xiàn)日期和時(shí)間的功能。
1創(chuàng)建工程
我們會(huì)用到串口打印輸出,這里基于之前分享的UART串口工程進(jìn)行拓展。這里說(shuō)幾個(gè)重要的地方,首先是UART串口時(shí)鐘,需要選擇SCICLK時(shí)鐘:

再次,配置UART對(duì)應(yīng)的信息:


還有設(shè)置,菜單:項(xiàng)目->C/C++Project Settings:

2配置RTC模塊
為了方便大家理解,我們先以最基礎(chǔ)的方式配置RTC,然后,間隔1秒讀一次RTC并通過(guò)UART串口打印輸出。
配置RTC:Pins選項(xiàng)下,選擇RTC,配置模式。

新建RTC模塊:我們添加RTC模塊并配置相關(guān)屬性(配置常用參數(shù),其實(shí)默認(rèn)即可)。


3添加源代碼
我們這里簡(jiǎn)單添加一個(gè)RTC模塊(源代碼文件),如圖:

bsp_rtct.c源代碼:
#include"bsp_rtc.h"
voidRTC_Init(void)
{
//設(shè)置初始化日期和時(shí)間
rtc_time_tset_time =
{ .tm_sec = RTC_SEC_SET, //秒
.tm_min = RTC_MIN_SET, //分
.tm_hour = RTC_HOUR_SET, //小時(shí)
.tm_mday = RTC_MDAY_SET, //日(一個(gè)月中)
.tm_wday = RTC_WDAY_SET, //星期
.tm_mon = RTC_MON_SET -1, //月份
.tm_year = RTC_YEAR_SET-1900,//年份
};
/*打開RTC*/
R_RTC_Open(g_rtc.p_ctrl, g_rtc.p_cfg);
/*設(shè)置時(shí)鐘源*/
R_RTC_ClockSourceSet(g_rtc.p_ctrl);
/* 設(shè)置日期時(shí)間 */
R_RTC_CalendarTimeSet(g_rtc.p_ctrl, &set_time);
}
bsp_rtc.h頭代碼:
#ifndefBSP_RTC_H
#defineBSP_RTC_H
#include"hal_data.h"
/**********日期宏定義**********/
#defineRTC_YEAR_SET 2024 //年
#defineRTC_MON_SET 10 //月
#defineRTC_MDAY_SET 31 //日
/*換算星期*/
#defineRTC_WDAY_SET (RTC_YEAR_SET-2000
+ ((RTC_YEAR_SET-2000)/4)
- 35 + (26*(RTC_MON_SET+1))/10
+ RTC_MDAY_SET -1 )%7
/**********時(shí)間宏定義**********/
#defineRTC_HOUR_SET 23 //時(shí)
#defineRTC_MIN_SET 59 //分
#defineRTC_SEC_SET 50 //秒
voidRTC_Init(void);
#endif
這里我們只簡(jiǎn)單的配置(初始化)了日期和時(shí)間,然后在應(yīng)用程序中,間隔1秒讀取并打印輸出。
voidhal_entry(void)
{
staticrtc_time_tget_time;
Debug_UART3_Init();// SCI3 UART 調(diào)試串口初始化
RTC_Init(); //初始化RTC
while(1)
{
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_10_PIN_01, BSP_IO_LEVEL_LOW);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);// 延時(shí)500ms
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_10_PIN_01, BSP_IO_LEVEL_HIGH);
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);// 延時(shí)500ms
/*獲取當(dāng)前時(shí)間*/
R_RTC_CalendarTimeGet(g_rtc.p_ctrl, &get_time);
/*打印當(dāng)前時(shí)間*/
printf("RTC:%d-%d-%d-%d:%d:%d
", get_time.tm_year +1900, get_time.tm_mon +1, get_time.tm_mday,
get_time.tm_hour, get_time.tm_min, get_time.tm_sec);
}
}
4演示效果
這里通過(guò)間隔1秒主動(dòng)讀取RTC,并打印輸出顯示,最后效果:

通過(guò)以上配置其實(shí)你會(huì)發(fā)現(xiàn)很簡(jiǎn)單,還有一種通過(guò)RTC(1秒)中斷打印輸出,這樣就不需要主動(dòng)讀取了。
方法其實(shí)很簡(jiǎn)單,配置中斷:

然后在代碼中增加 rtc_callback 這個(gè)中斷回調(diào)函數(shù)。
voidrtc_callback(rtc_callback_args_t*p_args)
{
staticrtc_time_tget_time;
switch(p_args->event)
{
/*若是周期中斷,則打印日期時(shí)間*/
caseRTC_EVENT_PERIODIC_IRQ:
/*獲取當(dāng)前時(shí)間*/
R_RTC_CalendarTimeGet(g_rtc.p_ctrl, &get_time);
/*打印當(dāng)前時(shí)間*/
printf("RTC:%d-%d-%d-%d:%d:%d
", get_time.tm_year +1900, get_time.tm_mon +1, get_time.tm_mday,
get_time.tm_hour, get_time.tm_min, get_time.tm_sec);
break;
default:
break;
}
}
實(shí)現(xiàn)效果一樣,這樣就可以不需要應(yīng)用程序主動(dòng)讀取了。
本文就分享到這里,希望對(duì)你們有所幫助。
-
單片機(jī)
+關(guān)注
關(guān)注
6060文章
44835瀏覽量
645222 -
實(shí)時(shí)時(shí)鐘
+關(guān)注
關(guān)注
4文章
298瀏覽量
66678 -
瑞薩
+關(guān)注
關(guān)注
36文章
22358瀏覽量
87629 -
時(shí)鐘芯片
+關(guān)注
關(guān)注
2文章
259瀏覽量
40479 -
RTC
+關(guān)注
關(guān)注
2文章
605瀏覽量
68140
原文標(biāo)題:瑞薩RA8系列教程 | RA8基于e2s實(shí)現(xiàn)RTC實(shí)時(shí)時(shí)鐘功能
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA8D1 CEU介紹與使用說(shuō)明
基于瑞薩RA8單片機(jī)的智能小車項(xiàng)目方案 附源代碼
基于瑞薩電子RA8D1 MCU的USB和I2S數(shù)字音頻應(yīng)用解決方案
瑞薩RA8快速上手指南:Cortex-M85內(nèi)核瑞薩RA8開發(fā)環(huán)境搭建 并點(diǎn)亮一個(gè)LED
【瑞薩RA8D1 CPK開發(fā)板試用】開箱與點(diǎn)燈
【瑞薩RA8D1 CPK開發(fā)板】RA8D1移植ThreadX操作系統(tǒng)
《電子發(fā)燒友電子設(shè)計(jì)周報(bào)》聚焦硬科技領(lǐng)域核心價(jià)值 第8期:2025.04.14--2025.04.18
新品發(fā)布 | 瑞薩推出面向圖形顯示應(yīng)用和語(yǔ)音/視覺多模態(tài)AI應(yīng)用的全新RA8 MCU產(chǎn)品群
基于瑞薩電子RA系列的野火耀陽(yáng)RA8D1開發(fā)板產(chǎn)品簡(jiǎn)介

瑞薩RA8D1單片機(jī)RTC模塊實(shí)現(xiàn)方法
評(píng)論