foc2.0函数SVPWM_3ShuntCalcDutyCycles看不明白
F103的IIC支持高速400K频率吗?
STM32F103RCT6断电以后,ADC会漏电
TIM11,TIM13失效
STM32N647配置LTDC时遇到问题
无源晶振开关电路设计
要在STM32F103C8T6上实现TIM+DMA+ADC采集电压,cubemx配置为什么,代码怎么写
CubeMX加载X-CUBE-AI库以后 再新建工程进不去mcu选择界面
使用Hal库的SPI读取磁边传感器导致STM32G4无法运行
STM32 用主从定时器方式实现DSP QEP模块的QCTMR功能,异常
微信公众号
手机版
我看了下基于LL库的代码,根据它的设置的分频值,最终初始化得到TR_CLK不是秒时钟,这会导致问题或误会。
应该说,LL库这个地方有点问题。一般来讲,我们通常设置分频值后得到TR_CLK应该是1s,看来你这里手动配置是必要的。
看着是一个负值
没有关系的。
这个值只是个标志,后续的初始化配置里根据该值进一步得到最终的异步分频值。
没有问题的,放心。
忘记说明了,我生成的是LL库代码。这是生成的源码
不知道评论是不是被吞了,这么久没发出来。我用的是LL库,这是源码
void MX_RTC_Init(void)
{
/* USER CODE BEGIN RTC_Init 0 */
/* USER CODE END RTC_Init 0 */
LL_RTC_InitTypeDef RTC_InitStruct = { 0 };
LL_RTC_TimeTypeDef RTC_TimeStruct = { 0 };
LL_PWR_EnableBkUpAccess();
/* Enable BKP CLK enable for backup registers */
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_BKP);
/* Peripheral clock enable */
LL_RCC_EnableRTC();
/* USER CODE BEGIN RTC_Init 1 */
/* USER CODE END RTC_Init 1 */
/** Initialize RTC and set the Time and Date
*/
RTC_InitStruct.AsynchPrescaler = 0xFFFFFFFFU;
LL_RTC_Init(RTC, &RTC_InitStruct);
LL_RTC_SetAsynchPrescaler(RTC, 0xFFFFFFFFU);
/** Initialize RTC and set the Time and Date
*/
RTC_TimeStruct.Hours = 0;
RTC_TimeStruct.Minutes = 0;
RTC_TimeStruct.Seconds = 0;
LL_RTC_TIME_Init(RTC, LL_RTC_FORMAT_BCD, &RTC_TimeStruct);
/* USER CODE BEGIN RTC_Init 2 */
/* USER CODE END RTC_Init 2 */
}
void SystemClock_Config(void)
{
LL_FLASH_SetLatency(LL_FLASH_LATENCY_2);
while (LL_FLASH_GetLatency() != LL_FLASH_LATENCY_2)
{
}
LL_RCC_HSE_Enable();
/* Wait till HSE is ready */
while (LL_RCC_HSE_IsReady() != 1)
{
}
LL_PWR_EnableBkUpAccess();
if (LL_RCC_GetRTCClockSource() != LL_RCC_RTC_CLKSOURCE_LSE)
{
LL_RCC_ForceBackupDomainReset();
LL_RCC_ReleaseBackupDomainReset();
}
LL_RCC_LSE_Enable();
/* Wait till LSE is ready */
while (LL_RCC_LSE_IsReady() != 1)
{
}
if (LL_RCC_GetRTCClockSource() != LL_RCC_RTC_CLKSOURCE_LSE)
{
LL_RCC_SetRTCClockSource(LL_RCC_RTC_CLKSOURCE_LSE);
}
LL_RCC_EnableRTC();
LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9);
LL_RCC_PLL_Enable();
/* Wait till PLL is ready */
while (LL_RCC_PLL_IsReady() != 1)
{
}
LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1);
LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2);
LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1);
LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL);
/* Wait till System clock is ready */
while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL)
{
}
LL_Init1msTick(72000000);
LL_SetSystemCoreClock(72000000);
}
实际上RTC时钟走时也不对,手动修改分频值就能正常走时