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

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

3天内不再提示

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

RA生态工作室 2025-05-13 17:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

微信公众号| strongerHuang

RTC:Real Time Clock,实时时钟
以前做项目要用时钟,都是外挂一个时钟芯片,随着需求的增长和技术的发展,很多MCU内部都集成了RTC(实时时钟)这个模块。
本文结合e2 studio开发环境、RA8D1单片机给大家描述RTC这个模块的使用方法。

准备工作

1、下载并安装e2 studio工具

下载地址,推荐瑞萨官方的GitHub:https://github.com/renesas/fsp/releases

我们这里基于Windows环境,安装exe文件,基本根据提示信息一路next即可。这里不再详述,推荐参看文章:瑞萨RA8系列教程 | 瑞萨 RA8 开发环境搭建

2、准备RA8D1开发板

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

wKgZO2f43POAHZpQABR1CRuSa3s223.png

e2 studio配置RTC模块

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

1、创建工程

我们会用到串口打印输出,这里基于之前分享的UART串口工程进行拓展,前面的过程请参看文章:瑞萨RA8系列教程 | 基于e2s实现RA8串口输出配置
这里说几个重要的地方,首先是UART串口时钟,需要选择SCICLK时钟:

wKgZPGf_S_CAbSmHAAIN7MhD6Ig232.png


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

wKgZO2f_S_GAYXyXAAMK_at7itI171.pngwKgZPGf_S_KALnCrAAM0_eDScCM162.png

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

wKgZO2f_S_KAMle3AAOS6qPXifc564.png

2、配置RTC模块

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

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

wKgZO2f_S_KAU-LXAAI2n0RIdME885.png

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

wKgZPGf_S_OAXLg3AAH_E6gUErg275.pngwKgZO2f_S_OAJs6RAAKn1tAtbWM439.png

3、添加源代码

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

wKgZPGf_S_OAKoVFAAJnDD8kbRQ139.png

bsp_rtct.c源代码:

#include "bsp_rtc.h" void RTC_Init(void) { //设置初始化日期和时间 rtc_time_t set_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头代码:

#ifndef BSP_RTC_H #define BSP_RTC_H #include "hal_data.h" /**********日期宏定义**********/ #define RTC_YEAR_SET 2024 //年 #define RTC_MON_SET 10 //月 #define RTC_MDAY_SET 31 //日 /*换算星期*/ #define RTC_WDAY_SET (RTC_YEAR_SET-2000 \ + ((RTC_YEAR_SET-2000)/4) \ - 35 + (26*(RTC_MON_SET+1))/10 \ + RTC_MDAY_SET -1 )%7 /**********时间宏定义**********/ #define RTC_HOUR_SET 23 //时 #define RTC_MIN_SET 59 //分 #define RTC_SEC_SET 50 //秒 void RTC_Init(void); #endif

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

void hal_entry(void) { tatic rtc_time_t get_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\r\n", 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,并打印输出显示,最后效果:

wKgZPGf_S_OAafrFAARu0PjpKtQ288.png

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

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

wKgZPGf_S_SAFQe8AAK2P07sW5U843.png

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

void rtc_callback(rtc_callback_args_t *p_args) { static rtc_time_t get_time; switch (p_args->event) { /*若是周期中断,则打印日期时间*/ case RTC_EVENT_PERIODIC_IRQ: /*获取当前时间*/ R_RTC_CalendarTimeGet (g_rtc.p_ctrl, &get_time); /*打印当前时间*/ printf("RTC:%d-%d-%d-%d:%d:%d\r\n", 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; } }


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

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

免费样品申请

https://jsj.top/f/AgUyYV

瑞萨技术论坛

https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/

瑞萨中文社区

中文资料

https://www.ramcu.cn/

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

    关注

    4

    文章

    314

    浏览量

    67065
  • 瑞萨电子
    +关注

    关注

    37

    文章

    2929

    浏览量

    73286
  • RTC
    RTC
    +关注

    关注

    2

    文章

    622

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    RA8系列高性能MCU开发上手体验

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是RA8系列高性能MCU开发上手体验。
    的头像 发表于 08-08 15:21 1885次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b><b class='flag-5'>系列</b>高性能MCU开发上手体验

    RA8快速上手指南:Cortex-M85内核RA8开发环境搭建 并点亮一个LED

    因为Cortex-M内核,RA8系列单片机支持多种市面上常见的开发环境,像Keil MDK、IAR EWARM等,而本文讲述的是
    的头像 发表于 03-17 14:35 1024次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>快速上手指南:Cortex-M85内核<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>开发环境搭建 并点亮一个LED

    面向电机控制应用推出性能卓越的RA8 MCU

    实时控制要求。   RA8T1产品群是RA8系列的第三款产品。所有
    发表于 01-31 15:29 1397次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>面向电机控制应用推出性能卓越的<b class='flag-5'>RA8</b> MCU

    IAR为RA8系列MCU开发提供支持

    嵌入式开发软件和服务的全球领导者IAR今日宣布,其最新发布的IAR Embedded Workbench for Arm 9.40.2版本中无缝集成了对(Renesas)RA8系列
    的头像 发表于 11-02 17:08 1393次阅读

    RA8系列用户手册

    电子发烧友网站提供《RA8系列用户手册.pdf》资料免费下载
    发表于 01-29 14:06 0次下载
    <b class='flag-5'>RA8</b><b class='flag-5'>系列</b>用户手册

    AMEYA360 | 皇华:面向电机控制应用推出性能卓越的RA8 MCU

    RA8T1产品群是RA8系列的第三款产品。所有RA8
    的头像 发表于 02-02 16:02 849次阅读

    电子RA家族推出RA8系列高算力通用MCU

    电子RA家族推出RA8系列高算力通用MCU,是业界首款基于Arm® Cortex®-M85(CM85)内核的32位MCU,主频高达480
    的头像 发表于 04-02 14:14 2214次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA</b>家族推出<b class='flag-5'>RA8</b><b class='flag-5'>系列</b>高算力通用MCU

    RA8硬件手册(英)

    RA8硬件手册
    发表于 06-20 15:24 3次下载

    电子全新RA8系列MCU产品介绍

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1和RA8E2两款新产品。这两款新产品已正式量产上市,将高算力的RA8
    的头像 发表于 11-09 17:04 1444次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子全新<b class='flag-5'>RA8</b><b class='flag-5'>系列</b>MCU产品介绍

    电子RA8E1和RA8E2 MCU新品解读

    Arm Cortex-M85 RA8系列于2024年11月推出RA8E1和RA8E2两款新产品。这两款新产品已正式量产上市,将高算力的RA8
    的头像 发表于 12-09 10:35 1124次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA8E</b>1和<b class='flag-5'>RA8E2</b> MCU新品解读

    RA8系列教程 | 学习 RA8 常看文档手册

    不管是初学MCU,还是用MCU做项目,我们都会看一些相关的文档手册(资料)。 那么,学习RA8单片机常看的文档手册有哪些?在哪里寻找这些文档手册?
    的头像 发表于 04-18 17:14 424次阅读
    <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'>RA8</b> 常看文档手册

    RA8系列教程 | 基于e2s实现RA8串口输出配置

    串口是最常见的通信方式之一,也是单片机调试最常见的通信接口,也是现在的单片机必备的通信接口,目前(2024-05)最新、最强的Cortext-M85内核的RA8系列单片机也不例外。
    的头像 发表于 04-11 20:00 412次阅读
    <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'>e2s</b><b class='flag-5'>实现</b><b class='flag-5'>RA8</b>串口输出配置

    RA8系列教程 | 基于 e2 studio 创建RA8工程

    系列教程前面几篇文章都是为开发做准备,本文正式进入开发阶段,基于 e2 studio 创建RA8工程,并点亮一个LED。
    的头像 发表于 04-03 17:14 412次阅读
    <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'>e2</b> studio 创建<b class='flag-5'>RA8</b>工程

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

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