我使用STM32F103VC,为了节省成本,把32768的RTC外部时钟去掉了,改为内部时钟HSE/128。 我使用的主晶振是8MHz的。HSE是1分频,所以也是8M. 所以RTCCLK=8M/128=64KHz。 设置RTC预分频值为65535,得到秒计数。但是实际测量发现每分钟居然慢2.8秒左右。这个有点离谱了。这个是实际情况吗?还是我的设置配置有问题? 请大家指教!!谢谢
RE:STM32的RTC内部时钟偏差太离谱了
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(93750); /* RTC period = RTCCLK/RTC_PR = (93.750 KHz)/(RTC+1) */
RTC_WaitForLastTask();
}
回复:STM32的RTC内部时钟偏差太离谱了
这个不准确,确实不太好。我建议你使用外部晶振,不要使用这个。我给你一段代码,我实验过了。我的是12M晶振。
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_SetPrescaler(93750); /* RTC period = RTCCLK/RTC_PR = (93.750 KHz)/(RTC+1) */
RTC_WaitForLastTask();
}
你说32.768改 12MHZ 吗?
如果使用CPU内部晶振停电就不动了....
回复:STM32的RTC内部时钟偏差太离谱了
8/128=62500吧?
回复:STM32的RTC内部时钟偏差太离谱了