STM32 Clock
STM32可使用晶阵 需要对时钟系统进行配置(也可不使用)
CT117-M4采用24MHz晶阵
四大时钟源
HSE_OSC HSE(高速外部时钟信号简称)
高速外部时钟信号HSE (High Speed External Clock signal)
相应 == HSI(High Speed Internal Clock signal)、LSE(Low..)、LSI(Low..)
Low clock signal直接接入了内部
HSE HSI会拉到主频 SYSCLK
SYSLCK 有三个源头 以上两种外 还有锁相环(PLL)时钟
HSI HSE -> PLL -> SYSLCK
HSI HSE 分频 进入PLL处理 再回SYSLCK
综合:
HSE HSI PLL -> SYSCLK -> AHB -> APB1 APB2
APB1 -> PCLK1 APB2->PCLK2
配置
- RCC内 配置HSE Crystal/.....
- Clock Configuration
- Input frequency晶阵 选择HSE 进入锁相环PLL M
- PLL内进行计算 输入SYSCLK == 80MHz
GENERATE CODE后SystemClock_Config于main.c中
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
//PLL Source Mux 选择了HSE 作为时钟输入
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV3;
RCC_OscInitStruct.PLL.PLLN = 20;
//PLLN *N X20频
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
//DIV2 /2频