stm32f411等待外部高速晶振起振库函数
时间: 2024-10-12 18:02:59 浏览: 36
STM32F411系列微控制器使用外部高速晶振作为系统时钟源时,为了确保在晶振稳定之前处理器不会运行在不稳定频率下,通常会有一个等待周期,这个过程需要通过特定的库函数来管理。在Keil MDK集成开发环境中,可以使用`HAL_RCC_OscConfig()`和`HAL_RCC_ClockConfig()`这两个库函数配合来完成:
1. `HAL_RCC_OscConfig()`函数负责配置时钟源和震荡器,包括启动HSI、HSE(外部高速晶体振荡器)或其他可用的震荡器,并设置相应的分频因数。
```c
HAL_StatusTypeDef status = HAL_RCC_OscConfig(RCC_OscInitStruct);
```
这里,`RCC_OscInitStruct`是一个`RCC_OscInitTypeDef`类型的结构体,包含了要配置的具体参数。
2. 等待晶振稳定后,使用`HAL_RCC_GetSysClockFreq()`获取当前系统的实际主频,然后判断是否达到预设的最低稳定频率。
3. 如果未达到稳定频率,可能会进入一个循环等待(如使用while循环),同时检查晶振状态标志位,比如`RCC_FLAG_HSERDY`(当HSE处于有效状态时置位)。
4. 当`HSE_FLAG`或者其他相关标志变为set时,说明晶振已稳定,此时调用`HAL_RCC_ClockConfig()`设置系统的时钟源和时钟分区。
```c
status = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
```
`RCC_ClkInitStruct`包含时钟配置信息。
阅读全文