STM32F103 USB虚拟串口,采用的官方库非HAL库文件,过一段时间会断开链接
KEILMDK每次都要手动选Reset and Run吗 不然下载到板子上得重启电源才行 求解答
mmt 工具如何管理NAND和LCDinterface 设备
CubeMX再次生成代码时中文注释出现乱码,如何解决?
STM32G431 ADC只有软件触发,无法通过硬件触发
在stm32cubeAI上,打开Lanuch NeuralNet Studio提示打不开
关于最近学习C语言回调和钩子函数的想法,以及对HAL库回调函数的困惑
能修改Cube MX 存放文档资料的文件夹吗?
stm32cubmx2是否有计划推广到其他stm32芯片使用?
在擦除flash时 同时挂起中断 是否会造成卡死以及相关的卡死机制
微信公众号
手机版
我看了下基于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时钟走时也不对,手动修改分频值就能正常走时