打印
[STM32H5]

STM32H562RG 外部RTC晶体起振问题

[复制链接]
364|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liszt99|  楼主 | 2024-9-29 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liszt99 于 2024-9-29 11:31 编辑

小弟最近在使用STM32H562RG ,知道它可以调整外部RTC的驱动能力。程序中我加了个LED灯看代码有没有顺利运行,当我使用外部晶体,并且调整为第三等级的时候。外部晶体不起振,LED灯不闪烁。使用内部LSI的时候,LED灯闪烁,程序正常运行。并且我注意到有这样一句注释。
Configure LSE Drive Capability
*  Warning : Only applied when the LSE is disabled.

翻译过来就是
配置LSE驱动器功能
*警告:仅在禁用LSE时适用。这句话我不是很理解。都禁用LSE了,还能配置LSE驱动功能?要怎么禁用?
部分代码如下。
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);

  while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}

  /** Configure LSE Drive Capability
  *  Warning : Only applied when the LSE is disabled.
  */
  HAL_PWR_EnableBkUpAccess();
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_MEDIUMHIGH);

  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 4;
  RCC_OscInitStruct.PLL.PLLN = 250;
  RCC_OscInitStruct.PLL.PLLP = 2;
  RCC_OscInitStruct.PLL.PLLQ = 2;
  RCC_OscInitStruct.PLL.PLLR = 2;
  RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
  RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
  RCC_OscInitStruct.PLL.PLLFRACN = 0;

  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
                              |RCC_CLOCKTYPE_PCLK3;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  {
    Error_Handler();
  }
}





使用特权

评论回复
沙发
liszt99|  楼主 | 2024-10-14 17:05 | 只看该作者
问题找到了。官方代码没问题。芯片也没问题。是我用电烙铁焊接晶体的时候,电烙铁有静电。晶体IO口被静电损坏了。
我检查了电烙铁,发现电烙铁地线没接好。接好地线,消除静电,后续没再出现这个问题了。

使用特权

评论回复
板凳
flycamelaaa| | 2024-10-15 17:17 | 只看该作者
所以芯片在焊接的时候一定要做好抗静电措施啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

88

帖子

2

粉丝