一、振荡器类型与配置
1、振荡器类型:LSE、LSI1、LSI2、MSI、HSI、HSI48、HSE
2、MX中的振荡器配置
3、代码配置样例
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI1
|RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
二、系统总线时钟与配置
1、总线时钟:SYSCLK、HCLK、HCLK2、HCLK4、PCLK1、PCLK2
2、MX中的总线时钟配置
3、代码配置样例
|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.AHBCLK2Divider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLK4Divider = RCC_SYSCLK_DIV1;
{
Error_Handler();
}
三、PLL时钟与配置
1、PLL时钟源选择:MSI、HSI、HSE或者NONE
2、PLL分频参数:PLLM、PLLN、PLLP、PLLQ、PLLR
3、MX中的PLL配置
四、外设时钟类型与时钟源配置
1、外设时钟类型:CLK_USART1、CLK_LPUART1、CLK_I2C1、CLK_I2C3、CLK_LPTIM1、CLK_LPTIM2、CLK_SAI1、CLK_USB、CLK_RNG、CLK_ADC、CLK_RTC/LCD、CLK_RFWAKEUP、CLK_SMPS
2、MX中的外设时钟源配置
1)PLLSAI1时钟配置
2)USART1时钟源配置
3)LPUART1时钟源配置
4)I2C1时钟源配置
5)I2C3时钟源配置
6)LPTIM1时钟源配置
7)LPTIM2时钟源配置
8)SAI1时钟源配置
9)USB时钟源配置
10)RNG时钟源配置
11)ADC时钟源配置
12)RFWAKEUP时钟源配置
13)SMPS时钟源配置
14)RTC/LCD时钟源配置
3、代码配置样例
|RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;
PeriphClkInitStruct.RFWakeUpClockSelection = RCC_RFWKPCLKSOURCE_LSI;
PeriphClkInitStruct.SmpsClockSelection = RCC_SMPSCLKSOURCE_HSE;
PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLKDIV_RANGE0;
{
Error_Handler();
}