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; RCC_OscInitStruct.PLL.PLLM = 4; RCC_OscInitStruct.PLL.PLLN = 168; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 4; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); }
时间: 2024-04-24 19:21:44 浏览: 184
这段代码是用于配置STM32的时钟源和PLL(锁相环)的参数。它使用外部高速时钟(HSE)作为时钟源,并使能PLL。PLL的输入时钟频率由HSE经过分频得到,然后通过倍频器(N)将输入时钟频率提高到需要的频率。最后,通过分频器(P)和分频器(Q)将PLL的输出时钟频率分别得到系统时钟(SYSCLK)和USB OTG FS、SDIO和RNG的时钟。
具体地说,代码中的配置如下:
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; :将时钟源设置为HSE。
- RCC_OscInitStruct.HSEState = RCC_HSE_ON; :使能HSE。
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; :使能PLL。
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; :将PLL的输入时钟源设置为HSE。
- RCC_OscInitStruct.PLL.PLLM = 4; :设置PLL的输入时钟分频系数M为4。
- RCC_OscInitStruct.PLL.PLLN = 168; :设置PLL的倍频系数N为168。
- RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; :设置分频器P的分频系数为2,得到SYSCLK。
- RCC_OscInitStruct.PLL.PLLQ = 4; :设置分频器Q的分频系数为4,得到USB OTG FS、SDIO和RNG的时钟。
最后,通过调用HAL_RCC_OscConfig函数来应用这些配置,并检查返回值是否为HAL_OK,如果不是,则调用Error_Handler函数处理错误。
阅读全文