本帖最后由 Halley 于 2022-2-17 19:44 编辑
**使用的硬件:瑞萨RA6M3开发板EK-RA6M3,MCU型号R7FA6M3AH3CFC
**使用的IDE:e2 studio Version: 2021-07 (21.7.0)
**是使用的FSP:FSP V3.2.0
1、RTC的时钟源
根据RA6M3用户手册上的描述,RTC可以使用LOCO(内部32.768k)和Sub_clock(外部32.768k),使用RCR4寄存器的RCKSEL位选择,RCKSEL寄存器在上电后初始化RTC时只能设置一次。
**代码:
uint8_t reg_rcr4;
g_rtc0.p_api->open(&g_rtc0_ctrl, &g_rtc0_cfg);
g_rtc0.p_api->calendarTimeSet(&g_rtc0_ctrl, &ori_time);
g_rtc0.p_api->periodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);
reg_rcr4 = R_RTC->RCR4;
if((uint8_t)g_rtc0_cfg.clock_source == reg_rcr4)
{
APP_PRINT("RTC clock source is %d, set OK. (0-Sub_clk; 1-LOCO)\r\n",reg_rcr4);
}
else
{
APP_PRINT("RTC clock source set err\r\n");
APP_PRINT("RTC cfg_clk is %d, set_clk is %d. (0-Sub_clk; 1-LOCO)\r\n",g_rtc0_cfg.clock_source, reg_rcr4);
}
问题:
使用上面的**代码,多次验证发现,RTC分别选择Sub_clk和LOCO,都会出现RTC要使用的时钟源和RTC初始化完成后的时钟源不一致的情况。
解决方法:
在RTC启动前再调用一次r_rtc_set_clock_source,配置一次RTC的时钟源。我是在r_rtc.c的第242行方调,**了多次,没再出现问题。
|