stm32设置系统时钟72m
时间: 2023-10-19 19:14:26 浏览: 88
配置stm32时钟
要设置STM32的系统时钟为72MHz,可以按照以下步骤进行:
1. 配置RCC时钟控制寄存器,使能外部高速时钟HSE,并等待HSE稳定:
```c
RCC->CR |= RCC_CR_HSEON; // 使能HSE
while (!(RCC->CR & RCC_CR_HSERDY)); // 等待HSE稳定
```
2. 配置FLASH等待状态,根据72MHz的系统时钟频率,设置FLASH等待状态为2个周期:
```c
FLASH->ACR |= FLASH_ACR_LATENCY_2; // 设置FLASH等待状态为2个周期
```
3. 配置PLL时钟,使其倍频为9,得到72MHz的系统时钟:
```c
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE; // PLL时钟源选择HSE
RCC->CFGR |= RCC_CFGR_PLLMULL9; // PLL倍频系数设置为9
```
4. 开启PLL时钟,并等待PLL稳定:
```c
RCC->CR |= RCC_CR_PLLON; // 使能PLL时钟
while (!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定
```
5. 配置系统时钟源为PLL时钟,并等待系统时钟稳定:
```c
RCC->CFGR &= ~RCC_CFGR_SW; // 清除SW位,选择PLL作为系统时钟源
RCC->CFGR |= RCC_CFGR_SW_PLL; // 选择PLL作为系统时钟源
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待系统时钟稳定
```
完整的代码示例如下:
```c
RCC->CR |= RCC_CR_HSEON; // 使能HSE
while (!(RCC->CR & RCC_CR_HSERDY)); // 等待HSE稳定
FLASH->ACR |= FLASH_ACR_LATENCY_2; // 设置FLASH等待状态为2个周期
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE; // PLL时钟源选择HSE
RCC->CFGR |= RCC_CFGR_PLLMULL9; // PLL倍频系数设置为9
RCC->CR |= RCC_CR_PLLON; // 使能PLL时钟
while (!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定
RCC->CFGR &= ~RCC_CFGR_SW; // 清除SW位,选择PLL作为系统时钟源
RCC->CFGR |= RCC_CFGR_SW_PLL; // 选择PLL作为系统时钟源
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待系统时钟稳定
```
阅读全文