本文将详细介绍如何在e2studio开发环境中为RA2L1(48引脚版本)配置RTC(Real-Time Clock,实时时钟)模块,设置时钟日历,并通过1秒周期中断触发串口打印当前时间。这对于需要实时时间显示的应用(如日志记录、智能设备等)非常实用。
本文假设你已安装e2studio并配置好RA2L1开发板的环境。如果尚未准备好,可以参考瑞萨官方文档安装e2studio和FSP(灵活软件包)。
File > New > Renesas C/C++ Project > Renesas RA。RA2L1。RTC_Demo。创建完成后,e2studio会自动生成基础代码和配置文件。
configuration.xml(通常在 ra_gen 文件夹下)。rtc_callback。


FSP生成代码后,我们需要在用户代码中实现RTC初始化、时间设置、中断处理和串口打印逻辑。
hal_entry.c)在 src/hal_entry.c 中编写以下代码:
#include "hal_data.h"
#include <stdio.h>
void hal_entry(void)
{
fsp_err_t err;
/* 打开RTC模块 */
err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);
if (FSP_SUCCESS != err) while(1); // 错误处理
/* 设置初始时间:2025年2月27日 12:00:00 */
rtc_time_t initial_time = {
.tm_sec = 0, // 秒
.tm_min = 0, // 分
.tm_hour = 12, // 时
.tm_mday = 27, // 日
.tm_mon = 1, // 月(0-11,1表示2月)
.tm_year = 125, // 年(从1900年开始,125 = 2025-1900)
};
err = R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &initial_time);
if (FSP_SUCCESS != err) while(1);
/* 打开UART模块 */
err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
if (FSP_SUCCESS != err) while(1);
/* 主循环(可留空,中断会处理打印) */
while (1)
{
R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS); // 避免CPU满载
}
}
R_RTC_Open 初始化RTC模块。R_RTC_CalendarTimeSet 设置初始时间。R_SCI_UART_Open 初始化UART模块。hal_entry.c)在同一文件中添加回调函数:
void rtc_callback(rtc_callback_args_t *p_args)
{
if (p_args->event == RTC_EVENT_PERIODIC)
{
rtc_time_t current_time;
char buffer[32];
/* 获取当前时间 */
R_RTC_CalendarTimeGet(&g_rtc0_ctrl, ¤t_time);
/* 格式化时间字符串 */
snprintf(buffer, sizeof(buffer), "%04d-%02d-%02d %02d:%02d:%02d\\\\\\\\r\\\\\\\\n",
current_time.tm_year + 1900, // 年份从1900起
current_time.tm_mon + 1, // 月份从0起
current_time.tm_mday,
current_time.tm_hour,
current_time.tm_min,
current_time.tm_sec);
/* 通过UART发送时间 */
R_SCI_UART_Write(&g_uart0_ctrl, (uint8_t *)buffer, strlen(buffer));
}
}
RTC_EVENT_PERIODIC 表示1秒周期中断。R_RTC_CalendarTimeGet 获取当前时间。snprintf 格式化时间为“YYYY-MM-DD HH:MM:SS”格式。R_SCI_UART_Write 通过串口发送数据。由于使用了 snprintf,需要启用标准库:
Project > Build Project,确保无编译错误。fsp.ld 缺失问题,参考此文重新生成FSP配置文件。2025-02-27 12:00:00
2025-02-27 12:00:01
2025-02-27 12:00:02
...
通过以上步骤,我们成功在e2studio中为RA2L1配置了RTC模块,设置了日历时间,并利用1秒中断通过串口实时打印时间。这种方法适用于需要时间戳的嵌入式应用。希望这篇博客能帮助你在RA系列开发中更进一步!
如果你有任何问题或优化建议,欢迎在评论区留言!
更多回帖