本帖最后由 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(); 
  } 
} 
 
 
 
 
 
 |   
     
  
 |