以下代码是参照从官网下载的例程,在测试中发现,读出来的时钟跟实际时间相比要慢。大概一分钟左右,测试读出来的时钟比实际的慢8,9秒。这样一天两天下来,时间相差就变得非常大了。各位大佬有没有遇到过同样的问题,是怎么解决的?
void rtc_pre_config(void)
{
/* enable access to RTC registers in backup domain */
rcu_periph_clock_enable(RCU_PMU); //使能PMU电源管理单元时钟
pmu_backup_write_enable(); //使能电源备份源,RTC需要此备份域
rcu_osci_on(RCU_IRC32K); //使用内部晶振32K
while(ERROR == rcu_osci_stab_wait(RCU_IRC32K));
rcu_rtc_clock_config(RCU_RTCSRC_IRC32K); //配置RTC时钟源为内部晶振32K
prescaler_a = 0x63; //ck_apre频率 = RTC_CLOCK/(prescaler_a+1) = 32000/(99+1)=320HZ
prescaler_s = 0x13F; //ck_spre频率 = ck_apre/(prescaler_s+1) = 320/(319+1)=1HZ
rcu_periph_clock_enable(RCU_RTC); //使能RTC外设时钟
rtc_register_sync_wait();
}
当我将prescaler_s分频值改为0x111时,测试读出来数据稍微好点,一分钟可能相差个4,5秒。
1