这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 瑞萨RA0单片机连载之九——RTC

共6条 1/1 1 跳转至

瑞萨RA0单片机连载之九——RTC

助工
2024-06-03 20:15:49     打赏

RA0E1的RTC(Real Time Clock)外设,实质是一个掉电后还继续运行的定时器。RA0E1的实时时钟(RTC)有两种计数模式:日历计数模式、二进制计数模式,可以通过寄存器的设置来切换模式。对于日历计数模式,RTC具有从2000年到2099年的100年日历,并自动调整闰年的日期。对于二进制计数模式,RTC计数秒,并保留信息作为串行值。二进制计数模式可用于公历(西历)以外的日历。

本篇主要介绍如何使用RASC配置RTC,并使用RTC中断来更新时间,在OLED中显示实时时间。

1、打开RASC配置工具,新增一个stack:

image.png

2、在g_rtc属性中,配置他为g_rtc0,开启中断,并设置中断函数为rtc_callback,中断级别为Priority3

image.png

3、保存配置并重新生成代码。

4、添加drv_rtc.c/h

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

int RTCDrvInit(void)
{
    rtc_time_t SetTime = {
        .tm_sec = 0,  //秒
        .tm_min = 45,  //分
        .tm_hour = 19,  //小时
        .tm_mday = 29,  //日(一个月中)
        .tm_wday = 3,   //星期
        .tm_mon = 6,   //月份
        .tm_year = 2024-1900, //年份(如今年是2008,则这里输入2008-1900=108)
    };

    fsp_err_t err = g_rtc0.p_api->open(g_rtc0.p_ctrl, g_rtc0.p_cfg);
    assert(FSP_SUCCESS == err);
    
    err = g_rtc0.p_api->calendarTimeSet(g_rtc0.p_ctrl, &SetTime);
    assert(FSP_SUCCESS == err);
    
    err = g_rtc0.p_api->periodicIrqRateSet(g_rtc0.p_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
    assert(FSP_SUCCESS == err);
    
    return true;
}

本函数为初始化RTC,先定义一个Settime结构体,将需要初始化的年月日时分秒以及星期添calendarTimeSet来设置时间。

使用periodicIrqRateSet设置一个1秒的中断。

void rtc_callback(rtc_callback_args_t * p_args)
{
    if(RTC_EVENT_PERIODIC_IRQ == p_args->event)
    {
     /*若是周期中断,获取日期*/
     gRtcPeriodFlag = true;
     g_rtc0.p_api->calendarTimeGet(g_rtc0.p_ctrl, (rtc_time_t*)&gCurTime);
    }
}

在回调函数中,更新获取时间标志,并把当前时间读取到gCurTime中。

同时我们开放一个RTCDrvGetTime函数,用于返回时间。

int RTCDrvGetTime(rtc_time_t *time)
{
    if(RTCDrvWaitPeriodInt())
    {
        *time = gCurTime;
        return true;
    }
    return false;
}


【测试】

在主函数中,先初始化RTC,然后在大循环中获取时间,并更新到OLED屏上:

image.png

【总结】

瑞萨的RASC可以方便的配置外设,本实验采用面向对象的编程思想来驱动RTC,实现了1秒的中断,在回调中获取当时间,并实时更新到OLED屏上。

实验现象:

image.png

附工程源码:

RA0E1_RTC.zip




关键词: 刘工爱评测之瑞萨RA0单片机     RA0E1     RTC    

高工
2024-06-03 21:31:22     打赏
2楼

谢谢分享


院士
2024-06-04 06:35:56     打赏
3楼

谢谢楼主的分享~!


高工
2024-06-04 09:56:46     打赏
4楼

话说掉电后为什么还可以运行?!



工程师
2024-06-04 21:31:59     打赏
5楼

666


助工
2024-10-07 17:00:09     打赏
6楼

谢谢楼主分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]