STM32F1 用标准库写程序设置外部晶振CPU频率64M
时间: 2024-10-17 13:07:43 浏览: 22
STM32F1使用内部晶振配置64M时钟
5星 · 资源好评率100%
STM32F1系列微控制器使用HAL (Hardware Abstraction Layer) 或 CMSIS (Cross-Tool Interface for Software Independence in Microcontrollers System Interface Standard) 等标准库编写程序时,设置64MHz外部晶振作为CPU主频通常需要以下步骤:
1. **配置时钟系统**:
- 首先,启用时钟树,包括HSE(高速外部时钟源)和HSI(内部高速时钟源)。对于64MHz晶体,HSE通常是首选。
- 使用`HAL_RCC_OscConfig()`函数配置时钟源,选择HSE,并将其分频至SYSCLK (系统时钟)。
2. **配置SYSCLK**:
- 通过`HAL_RCC_ClockConfig()`函数将SYSCLK配置成64MHz,通常会使用`RCC_SYSCLKSource_HSI_DIV1`或`RCC_SYSCLKSource_HSE`选项。
3. **启用分频器**:
- 如果SYSCLK仍低于目标频率,可能还需要使用PLL (预分频器和锁相环)。例如,可以使用`HAL_RCC_PLLConfig()`函数配置PLL,然后调用`HAL_RCC_PLLEnable()`和`HAL_RCC_SYSCLKSource_PLLSAI1`来使能并切换到锁定的频率。
4. **等待时钟稳定**:
- 在设置完时钟后,确保给时钟系统一些时间来稳定,这通常通过`HAL_Delay()`函数完成,直到`HAL_RCC_GetSysClockFreq()`返回期望的频率值。
5. **检查频率是否正确**:
- 最后,使用`HAL_RCC_GetSysClockFreq()`获取当前的SYSCLK频率,并确认它接近或等于64MHz。
以下是伪代码示例:
```c
// Enable HSE
HAL_RCC_OscConfig(RCC_OscInitStruct);
// Configure SYSCLK with HSE at 64 MHz
HAL_RCC_ClockConfig(&RCC或多钟配置结构体, FLASH_LATENCY_5);
// If needed, configure PLL and set SYSCLK to 64 MHz
HAL_RCC_PLLConfig(RCC_PLLInitTypeDef);
HAL_RCC_PLLEnable();
HAL_RCC_SYSCLKSource_PLLSAI1;
// Wait for clock to stabilize
while (HAL_RCC_GetSysClockFreq() < 64000000) {
HAL_Delay(10);
}
// Check the actual frequency
uint32_t systemClock = HAL_RCC_GetSysClockFreq();
printf("System Clock Frequency: %u MHz\n", systemClock / 1000000);
阅读全文