1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人使用STM32F103C8T6自身的RTC时钟制作了一个时钟定时器,运行正常,但是发现一个问题:每次上电启动10次,大约会变慢大约9~10s。我的程序模板使用STM32CubeMX自动生成,并使用了HAL库。RTC的初始化函数如下:
void MX_RTC_Init(void) { hrtc.Instance = RTC; hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND; hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE; HAL_RTC_Init( hrtc); } 怀疑是HAL_RTC_Init( hrtc)初始化的时候,重新设定RTC_PRL,暂停了时钟的counter计数? 于是我修改程序,在启动时检查BKP寄存器的数值,第一次启动运行HAL_RTC_Init( hrtc),并标记BKP寄存器。第二次以后启动以后,运行 HAL_StatusTypeDef HAL_RTC_Init2(RTC_HandleTypeDef *hrtc) { //uint32_t prescaler = 0; /* Check input parameters */ if(hrtc == NULL) { return HAL_ERROR; } /* Check the parameters */ assert_param(IS_RTC_ALL_INSTANCE(hrtc->Instance)); assert_param(IS_RTC_CALIB_OUTPUT(hrtc->Init.OutPut)); assert_param(IS_RTC_ASYNCH_PREDIV(hrtc->Init.AsynchPrediv)); if(hrtc->State == HAL_RTC_STATE_RESET) { /* Allocate lock resource and initialize it */ hrtc-> Lock = HAL_UNLOCKED; /* Initialize RTC MSP */ HAL_RTC_MspInit(hrtc); } hrtc->State = HAL_RTC_STATE_READY; return HAL_OK; } HAL_RTC_Init2( hrtc)是在原来HAL库里HAL_RTC_Init( hrtc)的基础上,我自己修改创建的。其删除了设置RTC_PRL的内容。上电起动10次后,仍然变慢4~5s。 实在不知道还要如何改写,求助高手! |
|
相关推荐
1个回答
|
|
STM32F103C8T6的RTC时钟变慢可能是由多种原因导致的。在您提供的代码中,我注意到了几个可能的问题。以下是一些建议和解决方案:
1. 检查RTC时钟源: 确保您已经正确设置了RTC时钟源。STM32F103C8T6的RTC时钟源可以是LSI、LSE或HSE。在STM32CubeMX中,您可以在时钟配置中设置RTC时钟源。通常,LSI和LSE的精度较低,可能导致RTC时钟变慢。如果可能,请使用HSE作为RTC时钟源。 2. 检查RTC预分频器设置: 在您的代码中,您使用了`RTC_AUTO_1_SECOND`作为异步预分频器的值。这意味着预分频器的值将自动设置为产生1秒的周期。然而,这可能会导致一些误差,特别是在使用LSI或LSE时。您可以尝试手动设置预分频器的值,以减少误差。 3. 检查RTC中断: 确保您已经正确处理了RTC中断。如果您使用了RTC的定时器功能,那么在每次定时器溢出时,您需要重新加载定时器值。否则,RTC时钟可能会变慢。 4. 检查电源管理: 确保您的STM32F103C8T6在低功耗模式下运行时,RTC仍然可以正常工作。在低功耗模式下,某些时钟源(如LSI)可能会停止工作,导致RTC时钟变慢。您可以尝试在低功耗模式下使用LSE或HSE作为RTC时钟源。 5. 检查外部因素: 确保没有外部因素影响RTC时钟的精度。例如,温度变化、电源波动等都可能导致RTC时钟变慢。 6. 使用外部RTC模块: 如果上述方法都不能解决问题,您可以考虑使用外部RTC模块,如PCF85263或DS3231。这些模块通常具有更高的精度和稳定性。 总之,要解决STM32F103C8T6的RTC时钟变慢问题,您需要检查时钟源、预分频器设置、中断处理、电源管理以及外部因素。如果问题仍然存在,您可以考虑使用外部RTC模块。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1767 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1619 浏览 1 评论
1069 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
724 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1673 浏览 2 评论
1935浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
728浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
551浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 01:12 , Processed in 0.749268 second(s), Total 47, Slave 41 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号