gpt4 book ai didi

stm32 - 如何使用带 PLL 的 HSE 将 RTC 时钟与 STM32 一起使用

转载 作者:行者123 更新时间:2023-12-05 04:17:13 37 4
gpt4 key购买 nike

我正在使用 stm32F0xx 系列并试图让 RTC 工作。我连接了一个外部 8MHz 晶振,并使用 PLL 创建一个 48MHz 的 sysclk。显然我想将这个时钟与 RTC 一起使用。我尝试了以下方法:

//(1) Write access for RTC registers
//(2) Enable init phase
//(3) Wait until it is allow to modify RTC register values
//(4) set prescaler,
//(5) New time in TR
//(6) Disable init phase
//(7) Disable write access for RTC registers
RTC->WPR = 0xCA; //(1)
RTC->WPR = 0x53; //(1)
RTC->ISR |= RTC_ISR_INIT; //(2)
while ((RTC->ISR & RTC_ISR_INITF) != RTC_ISR_INITF) //(3)
{
//add time out here for a robust application
}
RCC->BDCR = RCC_BDCR_RTCSEL_HSE;
RTC->PRER = 0x007C2E7C; //(4)
RTC->TR = RTC_TR_PM | 0x00000001; //(5)
RTC->ISR &=~ RTC_ISR_INIT; //(6)
RTC->WPR = 0xFE; //(7)
RTC->WPR = 0x64; //(7)

在主循环中有一个无限的 for 可以打开和关闭两个 LED。如果没有 RTC 配置,这可以正常工作,但只要我添加上面的代码,它就会停止工作。

如果我这样做,那么其余的代码就会中断。我可以使用 HSE 吗?如果可以,我是否正确使用了预分频器?

最佳答案

此示例来自在 STM32f429 上将 HSE 用于 RTC 的实际工作代码。它使用 STM HAL 软件库,但可以为您提供解决问题的线索。

请注意,在此代码之前必须配置 HSE 并将其用作频率源。

备注:阅读时,不仅要看时间,还要看日期。IE。: HAL_RTC_GetTime(&RTChandle, &RTCtime, FORMAT_BIN);//第一的 HAL_RTC_GetDate(&RTChandle, &RTCdate, FORMAT_BIN);//第二,即使你不需要否则寄存器保持卡住状态(在这种情况下,您只能在调试器下看到滴答声,但在实际运行中看不到,因为调试会读取两个寄存器)

// enable access to rtc register
HAL_PWR_EnableBkUpAccess();
// 1. 8Mhz oscillator (Source crystal! Not after PLL!) div by 8 = 1 Mhz
__HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_HSE_DIV8);
RTChandle.Instance = RTC;
RTChandle.Init.HourFormat = RTC_HOURFORMAT_24;
// 2. (1 Mhz / 125) = 7999 ticks per second
RTChandle.Init.AsynchPrediv = 125 - 1;
RTChandle.Init.SynchPrediv = 8000 - 1;
RTChandle.Init.OutPut = RTC_OUTPUT_DISABLE;
RTChandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
RTChandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;

// do init
HAL_RTC_Init(&RTChandle);
// enable hardware
__HAL_RCC_RTC_ENABLE();

关于stm32 - 如何使用带 PLL 的 HSE 将 RTC 时钟与 STM32 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24611306/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com