关注+星标公众号,不错过精彩内容
作者 | strongerHuang
微信公众号 | strongerHuang
准备工作
e2 studio配置RTC模块
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);
}
/**********日期宏定义**********/
/*换算星期*/
+ ((RTC_YEAR_SET-2000)/4) \
- 35 + (26*(RTC_MON_SET+1))/10 \
+ RTC_MDAY_SET -1 )%7
/**********时间宏定义**********/
void RTC_Init(void);
void hal_entry(void)
{
static 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);
}
}
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;
}
}