0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA8D1单片机RTC模块实现方法

瑞萨嵌入式小百科 来源:strongerHuang 2025-04-16 14:08 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:strongerHuang

RTC:Real Time Clock,实时时钟

以前做项目要用时钟,都是外挂一个时钟芯片,随着需求的增长和技术的发展,很多MCU内部都集成了RTC(实时时钟)这个模块。

本文结合e2 studio开发环境、RA8D1单片机给大家描述RTC这个模块的使用方法。

准备工作

1下载并安装e2studio工具

下载地址,推荐瑞萨官方的GitHub:

GitHub

https://github.com/renesas/fsp/releases

我们这里以瑞萨RA8D1单片机为例(当然,其实RA系列单片机也类似):

5089bb0e-19b0-11f0-9310-92fbcf53809c.png

e2 studio配置RTC模块

本文基于e2studio开发环境、RA8D1单片机,实现日期和时间的功能。

1创建工程

我们会用到串口打印输出,这里基于之前分享的UART串口工程进行拓展。这里说几个重要的地方,首先是UART串口时钟,需要选择SCICLK时钟:

50afaf1c-19b0-11f0-9310-92fbcf53809c.png

再次,配置UART对应的信息:

50cec0d2-19b0-11f0-9310-92fbcf53809c.png

50e9de30-19b0-11f0-9310-92fbcf53809c.png

还有设置,菜单:项目->C/C++Project Settings:

511260bc-19b0-11f0-9310-92fbcf53809c.png

2配置RTC模块

为了方便大家理解,我们先以最基础的方式配置RTC,然后,间隔1秒读一次RTC并通过UART串口打印输出。

配置RTC:Pins选项下,选择RTC,配置模式。

5128309a-19b0-11f0-9310-92fbcf53809c.png

新建RTC模块:我们添加RTC模块并配置相关属性(配置常用参数,其实默认即可)。

513acc6e-19b0-11f0-9310-92fbcf53809c.png

515f4012-19b0-11f0-9310-92fbcf53809c.png

3添加源代码

我们这里简单添加一个RTC模块(源代码文件),如图:

519fa09e-19b0-11f0-9310-92fbcf53809c.png

bsp_rtct.c源代码:

#include"bsp_rtc.h"


voidRTC_Init(void)
{
 //设置初始化日期和时间
 rtc_time_tset_time =
 { .tm_sec = RTC_SEC_SET, //秒
  .tm_min = RTC_MIN_SET, //分
  .tm_hour = RTC_HOUR_SET, //小时
  .tm_mday = RTC_MDAY_SET, //日(一个月中)
  .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);
 /*设置时钟源*/
 R_RTC_ClockSourceSet(g_rtc.p_ctrl);
 /* 设置日期时间 */
 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


/**********时间宏定义**********/
#defineRTC_HOUR_SET 23     //时
#defineRTC_MIN_SET 59     //分
#defineRTC_SEC_SET 50     //秒


voidRTC_Init(void);


#endif
这里我们只简单的配置(初始化)了日期和时间,然后在应用程序中,间隔1秒读取并打印输出。
voidhal_entry(void)
{
 staticrtc_time_tget_time;


 Debug_UART3_Init();// SCI3 UART 调试串口初始化
 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);// 延时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);// 延时500ms


   /*获取当前时间*/
   R_RTC_CalendarTimeGet(g_rtc.p_ctrl, &get_time);


   /*打印当前时间*/
   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演示效果

这里通过间隔1秒主动读取RTC,并打印输出显示,最后效果:

51b4eb70-19b0-11f0-9310-92fbcf53809c.png

通过以上配置其实你会发现很简单,还有一种通过RTC(1秒)中断打印输出,这样就不需要主动读取了。

方法其实很简单,配置中断:

51c731c2-19b0-11f0-9310-92fbcf53809c.png

然后在代码中增加 rtc_callback 这个中断回调函数。

voidrtc_callback(rtc_callback_args_t*p_args)
{
  staticrtc_time_tget_time;


  switch(p_args->event)
   {
    /*若是周期中断,则打印日期时间*/
    caseRTC_EVENT_PERIODIC_IRQ:


     /*获取当前时间*/
     R_RTC_CalendarTimeGet(g_rtc.p_ctrl, &get_time);


     /*打印当前时间*/
     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;
   }
}

实现效果一样,这样就可以不需要应用程序主动读取了。

本文就分享到这里,希望对你们有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45341

    浏览量

    663684
  • 实时时钟
    +关注

    关注

    4

    文章

    325

    浏览量

    68000
  • 瑞萨
    +关注

    关注

    36

    文章

    22431

    浏览量

    89771
  • 时钟芯片
    +关注

    关注

    2

    文章

    283

    浏览量

    41912
  • RTC
    RTC
    +关注

    关注

    2

    文章

    639

    浏览量

    71022
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于RA8单片机的智能小车项目方案 附源代码

    基于RA8单片机,e2studio开发环境,给大家讲述一下智能小车项目的方案,并附上主要的源代码。
    的头像 发表于 03-07 14:36 2095次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b><b class='flag-5'>单片机</b>的智能小车项目方案 附源代码

    基于电子RA8D1 MCU的USB和I2S数字音频应用解决方案

    今天给大家介绍一下上海觉鑫智能科技有限公司基于电子RA8D1 MCU的USB&I2S数字音频应用解决方案。
    的头像 发表于 04-30 14:47 2478次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA8D1</b> MCU的USB和I2S数字音频应用解决方案

    使用RA8D1开发板实现人脸识别的应用演示

    随着科技的进步,人脸识别技术已逐渐成为一种主流的安全验证手段。它不依赖传统的密码,而是通过面部特征识别来验证身份,从而提升了安全性并带来了更大的便利性。本文将介绍如何通过RA8D1微控制器与Aizip人脸识别技术结合,
    的头像 发表于 10-14 10:58 3570次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b>开发板<b class='flag-5'>实现</b>人脸识别的应用演示

    RA8D1单片机IO中断配置实现方法

    本文为结合e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述RA8D1
    的头像 发表于 04-09 15:05 1523次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b><b class='flag-5'>单片机</b>IO中断配置<b class='flag-5'>实现</b><b class='flag-5'>方法</b>

    RA8D1 CPK开发板试用】开箱与点灯

    一、前言 RA8D1 CPK开发板是业界首款基于Arm Cortex-M85内核的32位图形微控制器,板载资源丰富,性能优越。运行在480MHz的主频下可实现超过3000 Core
    发表于 10-08 01:04

    RA8D1 CPK开发板】RA8D1移植ThreadX操作系统

    首先感谢[RA生态工作室]( RA MCU 生态社区)提供的
    发表于 10-20 20:22

    《电子发烧友电子设计周报》聚焦硬科技领域核心价值 第8期:2025.04.14--2025.04.18

    、开发技巧--芯微RK平台开发必备的20个常用命令 6、基于 NXP NCJ29D5D UWB 定位算法方案 7、RA8D1
    发表于 04-18 20:03

    电子宣布推出RA8D1微控制器(MCU)产品群

    2023年12月12日,电子宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 15:58 1874次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子宣布推出<b class='flag-5'>RA8D1</b>微控制器(MCU)产品群

    基于电子RA系列的野火耀阳RA8D1开发板产品简介

    野火耀阳RA8D1开发板是一款功能强大的开发板,适用于各种嵌入式应用开发。它采用电子的RA系列R7FA8D1BHECBD微控制器作为主控
    的头像 发表于 05-29 14:19 2041次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA</b>系列的野火耀阳<b class='flag-5'>RA8D1</b>开发板产品简介

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 1437次阅读
    【<b class='flag-5'>RA8D1</b>试用活动】<b class='flag-5'>RA8D1</b>B-CPKCOR开发板移植linux

    RA8D1加密引擎功能体验和实践

    本次实践完成了RA8D1芯片AES密钥封装和芯片上加解密功能验证
    的头像 发表于 11-23 01:01 1430次阅读
    <b class='flag-5'>RA8D1</b>加密引擎功能体验和实践

    RA8系列教程 | 基于 Keil 开发 RA8单片机

    本文结合Cortext-M85单片机RA8D1、Keil MDK,以及自家的代码初始化工
    的头像 发表于 04-22 17:41 1059次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | 基于 Keil 开发 <b class='flag-5'>RA8</b><b class='flag-5'>单片机</b>

    RA8系列教程 | RA8 开发环境搭建,并点亮一个LED

    今天就给大家讲讲基于Cortex-M85内核RA8单片机快速上手指南。
    的头像 发表于 06-04 17:32 1489次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> <b class='flag-5'>RA8</b> 开发环境搭建,并点亮一个LED

    RA8系列教程 | RA8基于e2s实现RTC实时时钟功能

    本文结合e2 studio开发环境、RA8D1单片机给大家描述RTC这个模块的使用方法
    的头像 发表于 05-13 17:07 1048次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | <b class='flag-5'>RA8</b>基于e2s<b class='flag-5'>实现</b><b class='flag-5'>RTC</b>实时时钟功能

    【有奖评测 】最强Cortex-M85单片机RA8D1套件(显示屏+摄像头)免费评测

    RA8D1套件测评,带显示屏,带摄像头,支持MIPI-DSI显示输出接口。板上除了实现RA8D1最小系统外,还搭载了实用的外设功能
    的头像 发表于 09-02 08:04 657次阅读
    【有奖评测 】最强Cortex-M85<b class='flag-5'>单片机</b>!<b class='flag-5'>RA8D1</b>套件(显示屏+摄像头)免费评测