今天阅读该代码理清了思路,感谢的CSDN小飞哥玩嵌入式的文章,又针对官方库进行了注释,如有错误,请理解。
以HSE时钟配置为例
if (((RCC_OscInitStruct->OscillatorType)& RCC_OSCILLATORTYPE_HSE)==
RCC_OSCILLATORTYPE_HSE)
{/检查输入变量正确否/
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
/*判读系统时钟是否为HSE或者PLL元为HSE,是的话进入if,否进入else准备设置为HSE为系统时钟*/
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) &&
(__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE)))
{
/*如果状态寄存器值为就绪(就是该值不等于RESET)并且设定HSEState == RCC_HSE_OFF,此时
返回错误,该步骤防止HSE 在运行时关闭,*/
if ((__HAL_RCC_GET_FLAG(RCC_FLAG