STM32H723ZGT6 初始化晶振
时间: 2023-09-03 08:10:34 浏览: 172
STM32使用有源晶振软件配置需做的更改
5星 · 资源好评率100%
STM32H723ZGT6芯片内部集成了一个主频为400MHz的高速RC振荡器,如果需要使用外部晶振,则需要进行初始化配置。
以下是初始化外部8MHz晶振的示例代码:
```c
#include "stm32h7xx_hal.h"
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
void SystemClock_Config(void)
{
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 = 8;
RCC_OscInitStruct.PLL.PLLN = 400;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
RCC_OscInitStruct.PLL.PLLR = 2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK)
{
Error_Handler();
}
}
```
在这段代码中,我们使用了外部8MHz的晶振,并将其作为PLL时钟源。配置PLL时,我们设置了PLL的输入分频系数为8,因此输入频率为8MHz,PLL倍频系数为400,因此输出频率为400MHz。同时,我们还设置了PLL的输出分频系数,以便为系统时钟、APB1时钟和APB2时钟提供正确的时钟频率。
在使用这段代码之前,需要先将STM32H723ZGT6的时钟源从内部高速RC振荡器切换到外部晶振。
```c
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
/* Select HSE as system clock source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
```
在以上代码中,我们将时钟源设置为外部晶振,并关闭了PLL。
阅读全文