ST意法半导体
直播中

王鹏

7年用户 1342经验值
私信 关注
[问答]

NUCLEO L432KC的HSI时钟配置不正确的原因是什么?

我已经设置了使用 HSI 时钟计时的 UART1,驱动程序版本为 1.16
导致输出不正确就行了。

与驱动程序版本 1.14 相同的代码工作得很好。见图片。
原来时钟设置中的 HSI 微调值不正确
  • RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  •   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  •   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  •   /** Initializes the CPU, AHB and APB busses clocks
  •   */
  •   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  •   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  • /* RCC_HSICALIBRATION_DEFAULT seems to be wrong */
  •   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
  •   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  •   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  •   /** Initializes the CPU, AHB and APB busses clocks
  •   */
在不同版本的驱动程序中,它被硬编码为不同的值:
v 1.14 - 0x10u
v 1.16 - 0x40u
此外,当我进入调试模式并检查寄存器中的实际值时,在第一种情况下它是相同的,但在第二种情况下它是 0,而不是 0x40u。

手动将值替换为 0x10u 解决了这个问题。
请检查一下。





回帖(1)

李桂珍

2022-12-30 10:20:32
遗憾的是,这是一个长期存在的问题,于 2020 年 7 月引入,一年后仍然存在。更糟糕的是旧版本的 HAL 在这方面工作正常。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分