配置目标
外部8M 经锁相环后倍频成72M 然后分为时钟树1和时钟树2
配置子函数
void stm32_clock_init(uint32_t plln)
{
HAL_StatusTypeDef ret= HAL_ERROR;
RCC_OscInitTypeDef rcc_osc_init = {0};
rcc_osc_init.HSEState = RCC_HSE_ON;
rcc_osc_init.OscillatorType = RCC_OSCILLATORTYPE_HSE;
rcc_osc_init.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
rcc_osc_init.PLL.PLLState = RCC_PLL_ON;
rcc_osc_init.PLL.PLLSource = RCC_PLLSOURCE_HSE;
rcc_osc_init.PLL.PLLMUL = plln;
RCC_ClkInitTypeDef rcc_clk_init = {0};
rcc_clk_init.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
rcc_clk_init.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
rcc_clk_init.AHBCLKDivider = RCC_SYSCLK_DIV1;
rcc_clk_init.APB1CLKDivider = RCC_HCLK_DIV2;
rcc_clk_init.APB2CLKDivider = RCC_HCLK_DIV1;
ret = HAL_RCC_OscConfig(&rcc_osc_init);
while(ret==HAL_OK)//没配置成功就死等
{;
}
ret = HAL_RCC_ClockConfig(&rcc_clk_init, FLASH_LATENCY_2);
while(ret==HAL_OK)
{;
}
}
主函数调用
stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
RCC_OscInitTypeDef 与 RCC_ClkInitTypeDef 这两个结构体可填的参数:
找到定义的注释后的@ref 然后全局搜索这个词 定位到defgroup