RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
时间: 2023-06-10 20:06:19 浏览: 79
这段代码是STM32的时钟配置代码,它的作用是配置芯片的主时钟(MCU的时钟)。
首先,`RCC_OSCILLATORTYPE_HSE`表示使用外部高速晶振作为系统时钟源。`RCC_HSE_ON`表示打开外部高速晶振。`RCC_HSE_PREDIV_DIV1`表示外部高速时钟不需要进行分频。
接下来,`RCC_PLL_ON`表示打开PLL时钟源。PLL(Phase Locked Loop)是一种时钟倍频电路,可以将外部时钟倍频得到更高的时钟频率。在这段代码中,使用了PLL时钟源作为系统时钟源。
最后,这段代码会将时钟配置应用到芯片上,使得芯片的时钟源和时钟频率正确配置。
相关问题
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC
_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
这段代码是对于STM32芯片的时钟配置代码。其中,RCC表示Reset and Clock Control,用于对系统时钟进行配置;而HSE表示High-Speed External,即高速外部时钟,一般使用晶振等外部时钟源;PLL表示Phase-Locked Loop,即锁相环,用于将输入时钟频率倍频或分频,以获得更高或更低的时钟频率。在这段代码中,将HSE作为PLL的时钟源,将其倍频9倍,最终得到系统时钟频率为HSE*9=72MHz。同时,设置HSE预分频值为1,表示不对外部时钟进行分频。
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(); }
这段代码是用于配置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函数处理错误。