| 
 
| cubemx,固件库都是最新版的。我使用了UART2,就用cubemx做了相应配置。但是在执行UART2初始化,调用下边这个函数的时候就会进入hardfault。 
 
 
 uint32_t HAL_RCC_GetPCLK2Freq(void)
 {
 /* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
 #if defined(RCC_D2CFGR_D2PPRE2)
 
 // return HAL_RCC_GetHCLKFreq();  本来是应该执行下边那条指令的,为分析问题我简化成这样,还是会进入hardfault
 return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->D2CFGR & RCC_D2CFGR_D2PPRE2)>> RCC_D2CFGR_D2PPRE2_Pos]) & 0x1FU));
 #else
 return (HAL_RCC_GetHCLKFreq() >> ((D1CorePrescTable[(RCC->CDCFGR2 & RCC_CDCFGR2_CDPPRE2)>> RCC_CDCFGR2_CDPPRE2_Pos]) & 0x1FU));
 #endif
 }
 
 
 看上去是HAL_RCC_GetPCLK2Freq 这个函数导致的,但是如果我把这个函数放到main.c初始化时单独执行,也是可以执行通过的,如下:
 
 /* Initialize all configured peripherals */
 MX_GPIO_Init();
 MX_QUADSPI_Init();
 MX_TIM1_Init();
 val = HAL_RCC_GetHCLKFreq();   //这样执行就能通过,奇怪
 MX_USART2_UART_Init();
 | 
 |