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

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

3天内不再提示

瑞萨RA MCU众测宝典 | 串口之【RA-Eco-RA2L1】RTC日历及串口设置时间

RA生态工作室 2026-04-21 18:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

RA MCU众测宝典 | 串口之【RA2L1】开发板开箱及串口输出实现

RA MCU众测宝典 | PWM之【RA2L1】呼吸灯

ADC/DAC之【RA2L1】DAC电压输出及ADC电压采集实验

本次实验内容是调用RTC实时时钟,实现日历、串口设定时间的功能。

01

硬件部分:RTC


RTC时钟模块是一个时间外设,主要用于日期时间的存储和控制,有别于一般MCU中的 Timer,RTC时钟有两种计时模式,日期模式和计时模式,RTC常见的操作包括设置时间、设置定时闹铃、配置周期性中断以及启动或停止操作。

02

软件部分

1

配置RTC

选择Stacks选项卡:

序号

操作

1

点击界面下方标签栏中的Stacks标签,进入堆栈配置页面。

2

在HAL/Common Stacks区域,点击New Stack按钮。

3

在弹出菜单中,选择Timers选项。

4

在Timers子菜单中,选择Realtime Clock (r_rtc)。

ed050a6e-3d69-11f1-ab55-92fbcf53809c.jpg

点击可查看大图


序号

操作

1

在Settings设置区域的Module g_rtc0 Realtime Clock (r_rtc)部分,找到Clock Source,将其设置为Sub-Clock。

2

在Settings设置区域的Module g_rtc0 Realtime Clock (r_rtc)部分,设置Callback为rtc_callback。

3

在Settings设置区域的Module g_rtc0 Realtime Clock (r_rtc)部分,分别设置Alarm Interrupt Priority、Period Interrupt Priority、Carry Interrupt Priority为Priority 2。

ed55ec68-3d69-11f1-ab55-92fbcf53809c.jpg

点击可查看大图


配置完成后,生成项目代码。

2

编写代码

将先前的项目模板复制一份,重命名为03_RTC。


2.1 新建rtc.h

新建文件rtc.h,加入以下代码:

左右滑动查看完整内容

#ifndefRTC_H_#defineRTC_H_#include"hal_data.h"externrtc_time_tset_time;externvolatilebool rtc_flag;#endif


2.2 新建rtc.c

这段代码定义一个set_time结构体,用于在主函数中配置,同时实现了rtc_callback回调函数,用于每1秒中断一次使用:

左右滑动查看完整内容

#include"hal_data.h"#include"rtc.h"
rtc_time_tset_time = { .tm_sec =59, /* 秒,范围从 0 到 59 */ .tm_min =59, /* 分,范围从 0 到 59 */ .tm_hour =23, /* 小时,范围从 0 到 23*/ .tm_mday =28, /* 一月中的第几天,范围从 1 到 31*/ .tm_mon =1, /* 月份,范围从 0 到 11(0代表1月,11代表12月)*/ .tm_year =125,/* 自 1900 起的年数,2021 为 121*/};
volatilebool rtc_flag =false; // RTC 延时 1s 标志位
voidrtc_callback(rtc_callback_args_t*p_args){ if(p_args->event == RTC_EVENT_PERIODIC_IRQ) rtc_flag =true;}


2.3 修改hal_entry.c

在文件开头加入代码:

左右滑动查看完整内容

#include"rtc.h"
rtc_time_tget_time;


在hal_entry函数中加入代码,主要功能是初始化了rtc、配置时间以及解析串口接收到的设定时间的信息:

左右滑动查看完整内容

g_rtc0.p_api->open(&g_rtc0_ctrl, &g_rtc0_cfg); g_rtc0.p_api->calendarTimeSet(&g_rtc0_ctrl, &set_time); g_rtc0.p_api->periodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND); while(1) { if(rtc_flag) { g_rtc0.p_api->calendarTimeGet(&g_rtc0_ctrl, &get_time);//获取 RTC 计数时间 rtc_flag =0; printf("%d年%d月%d日%d:%d:%d\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); } if(uart_rx_complete_flag) { char *time; uart_rx_complete_flag =0; //解析设置时间的命令 e.g:time:20250126080910 // warning: 未添加错误纠正算法,请输入正确的时间,否则工作异常! if(strncmp(rx_data,"time:",5) ==0){ time= rx_data+5; set_time.tm_year = ((time[0]-'0')*1000)+((time[1]-'0')*100)+ ((time[2]-'0')*10)+(time[3]-'0')-1900; set_time.tm_mon = ((time[4]-'0')*10)+(time[5]-'0') -1; set_time.tm_mday = ((time[6]-'0')*10)+(time[7]-'0'); set_time.tm_hour = ((time[8]-'0')*10)+(time[9]-'0'); set_time.tm_min = ((time[10]-'0')*10)+(time[11]-'0'); set_time.tm_sec = ((time[12]-'0')*10)+(time[13]-'0'); g_rtc0.p_api->calendarTimeSet(&g_rtc0_ctrl, &set_time); } } }


2.4修改debug_bsp_uart.c

该文件的内容如下:

左右滑动查看完整内容

#include"debug_bsp_uart.h"/* 发送完成标志 */volatileint uart_send_complete_flag =0;volatileint uart_rx_complete_flag =0;
charrx_data[1024];volatileuint16_tcnt;uint8_tstat =0;/* 调试串口 UART9 初始化 */voidDebug_UART9_Init(void){ fsp_err_terr = FSP_SUCCESS;
err =R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg); assert(FSP_SUCCESS == err);}
/* 串口中断回调 */voiddebug_uart9_callback(uart_callback_args_t*p_args){ switch(p_args->event) { caseUART_EVENT_RX_CHAR: { /* 把串口接收到的数据发送回去 */ // R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&(p_args->data), 1); rx_data[cnt++] = (char)p_args->data; if(stat ==0&& p_args->data =='\r') { stat =1; } elseif(stat ==1&& p_args->data =='\n') {// 接收完一行 uart_rx_complete_flag =1; cnt =0; } else { stat =0; }
break; } caseUART_EVENT_TX_COMPLETE: { uart_send_complete_flag =1; break; }
default: break; }}
/* 重定向 printf 输出 */#ifdefined __GNUC__ && !defined __clang__int_write(intfd,char*pBuffer,intsize);// 防止编译警告int_write(intfd,char*pBuffer,intsize){ (void)fd; R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t*)pBuffer, (uint32_t)size); while(uart_send_complete_flag ==0) ; uart_send_complete_flag =0;
returnsize;}#elseintfputc(intch, FILE *f){ (void)f; R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t*)&ch,1); while(uart_send_complete_flag ==0) ; uart_send_complete_flag =0;
returnch;}#endif


2.5修改debug_bsp_uart.h

该文件的内容如下:

左右滑动查看完整内容

#ifndefDEBUG_BSP_UART_H_#defineDEBUG_BSP_UART_H_#include"hal_data.h"#include"stdio.h"voidDebug_UART9_Init(void);externvolatileint uart_rx_complete_flag;externchar rx_data[1024];#endif


03


下载测试


把编译好的程序下载到开发板并复位,打开串口助手,在发送框输入:

ed78af46-3d69-11f1-ab55-92fbcf53809c.jpg

点击可查看大图


如果串口助手没有自动添加\r\n,则上面的结尾需要手动加上\r\n,否则程序无法识别该命令。

程序中未作纠错,请勿输入错误的时间,否则日历将出错。


04


工程附件



工程附件-RTC

https://bbs.elecfans.com/jishu_2474886_1_1.html

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

    关注

    147

    文章

    19116

    浏览量

    403521
  • 瑞萨电子
    +关注

    关注

    39

    文章

    2986

    浏览量

    74516
  • RTC
    RTC
    +关注

    关注

    2

    文章

    665

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA2L1 MCU e² studio和FSP的使用指南

    本期“RA MCU宝典” 继续聚焦 “环境搭建” 专题,带大家走进【RA-Eco-RA2L1-48PIN-V1.0】的世界,查看e² s
    的头像 发表于 08-04 13:45 3192次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA2L1</b> <b class='flag-5'>MCU</b> e² studio和FSP的使用指南

    RA MCU宝典 SysTickRA0E1定时器点灯

    RA MCU宝典 ”  SysTick 专题来啦!在上个的 环境搭建 专题中,我们已经筑牢了开发基础,而这次,我们要聚焦一个让程序“有节奏”运行的关键角色—— SysTick定
    的头像 发表于 08-05 14:50 3605次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b>  SysTick<b class='flag-5'>之</b><b class='flag-5'>RA0E1</b>定时器点灯

    RA MCU宝典 | I²C读取EEPROM

    “RAMCU宝典”IIC专题继续深耕!上一期我们用【RA-Eco-RA2E1】开发板实现了IIC通信的OLED显示。这次我们把目光转向实用的存储场景——基于【RA-Eco-RA4M2
    的头像 发表于 01-13 18:05 8099次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | I²C读取EEPROM

    RA MCU宝典 | ADC/DACRA2L1】DAC电压输出及ADC电压采集实验

    “RAMCU宝典”ADC/DAC通信专题上线啦!咱们接下来要解锁嵌入式开发中“连接模拟与数字世界”的关键技能——ADC/DAC专题。这次,嵌入式小百科将和大家一起聚焦【
    的头像 发表于 01-20 18:43 5777次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | ADC/DAC<b class='flag-5'>之</b>【<b class='flag-5'>RA2L1</b>】DAC电压输出及ADC电压采集实验

    RA MCU宝典 | 环境搭建RA-Eco-RA6E2-64PIN-V1.0 开发板】介绍、环境搭建、工程测试

    “RAMCU宝典”环境搭建专题再添实用干货!这次咱们聚焦高性能入门级开发板——【RA-Eco-RA6E2-64PIN-V1.0】。本文介绍了RA-Eco-RA6E2-64PIN-V
    的头像 发表于 03-20 16:23 7916次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | 环境搭建<b class='flag-5'>之</b>【<b class='flag-5'>RA-Eco-RA6E2</b>-64PIN-V1.0 开发板】介绍、环境搭建、工程测试

    RA MCU宝典 | 环境搭建RA-Eco-RA4M2】搭建Keil开发环境

    “RAMCU宝典”环境搭建专题再添硬核实操!开启宝典概览
    的头像 发表于 04-03 17:59 7089次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | 环境搭建<b class='flag-5'>之</b>【<b class='flag-5'>RA-Eco-RA4M2</b>】搭建Keil开发环境

    RA MCU宝典 | 环境搭建RA-Eco-RA4M2】QE工具使用

    “RAMCU宝典”环境搭建专题再添硬核实操!开启宝典01简介RA-Eco-RA4M2-1
    的头像 发表于 04-10 18:26 5063次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | 环境搭建<b class='flag-5'>之</b>【<b class='flag-5'>RA-Eco-RA4M2</b>】QE工具使用

    RA-Eco-RA4M2开发板评测】RTC测试

    本次基于RA-Eco-RA4M2开发板的RTC(实时时钟)测试实验,使用上次测试例程的串口发送方式,来展示
    发表于 06-03 12:24

    RA-Eco-RA6M4开发板评测】——2.串口打印

    ;delay_ms(200);LED3_OFF; printf(\"欢迎试用电子RA-Eco-RA6M4开发板评测\\\\r\\\\n\"); printf(\"摒弃
    发表于 07-16 13:20

    RA MCU串口通信空闲中断

    RA MCU串口通信空闲中断
    的头像 发表于 09-26 16:59 2085次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>串口</b>通信空闲中断

    RA2L1/RA2E1 原理图 PCB

    资料介绍 RA-Eco-RA2L1/RA2E1-48PIN-V1.0 原理图 PCB
    发表于 10-16 00:30 93次下载

    基于RA2L1实现串口DTC数据接收

    基于RA2L1实现串口DTC数据接收
    的头像 发表于 10-10 09:34 2120次阅读
    基于<b class='flag-5'>RA2L1</b>实现<b class='flag-5'>串口</b>DTC数据接收

    RA2L1系列CAN通信应用

    RA2L1系列CAN通信应用
    的头像 发表于 06-26 08:06 2088次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA2L1</b>系列CAN通信应用

    RA家族精品RA2L1产品介绍

    RA2L1MCURA家族RA2系列广受欢迎的一款产品。RA2L1MCU专为超低功耗应用而设
    的头像 发表于 12-27 18:07 1509次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>家族精品<b class='flag-5'>RA2L1</b>产品介绍

    RA MCU宝典 | 环境搭建【FPB-RA0E2】开发环境搭建

    RA生态工作室关注我们“RAMCU宝典”环境搭建专题更新啦!这次我们聚焦【FPB-RA0E2】开发板,一步步打通开发“第一关”,为后续功能开发筑牢基础。开启
    的头像 发表于 03-11 16:33 1101次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b><b class='flag-5'>众</b>测<b class='flag-5'>宝典</b> | 环境搭建<b class='flag-5'>之</b>【FPB-<b class='flag-5'>RA0E2</b>】开发环境搭建