stm32-时钟系统
- Date:2023-06-05
- Time:14:21
- Subject: none
- Tags: #stm32 #时钟
[[2023-06]]
什么是时钟
- 简单来说,时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波
- 时钟是单片机的脉搏,搞懂时钟走向及关系,对单片机使用至关重要!
认识时钟树(F1)
L:low
S:speed
I:internal
E:external
时钟树简图
- PLL:锁相环,倍频系数:2~3(PLLCLK)
- HSE分频可以说/1或者/2,HSI分频/2,再来到PLL倍频
- HCLK前分频也用1,保持72mhz
- APB1则分频/2,
- 低速晶振
HAL库内体现
- 时钟源、锁相环:HAL_RCC_OscConfig()
- 系统时钟、总线:HAL_RCC_ClockConfig()
- 使能外设时钟:_ _ HAL_RCC_PPP_CLK_ENABLE() 是一个宏定义,打开外设时使用时
- 扩展外设时钟(RTC/ADC/USB):HAL_RCCEx_PeriphCLKConfig()
STM32CubeMX时钟树(F103)
- Date:2023-06-05
- Time:15:01
- Subject: none
- Tags: #stm32 #配置 #时钟
[[2023-06]]
系统时钟配置步骤
- 配置HSE_VALUE
- 告诉HAL库外部晶振频率,stm32xxxx_hal_conf.h
- 调用SystemInit()函数(可选)
- 在启动文件中调用, 在system_stm32xxxx.c定义
- 选择时钟源,配置PLL
- 通过HAL_RCC_OscConfig()函数设置
- 选择系统时钟源,配置总线分频器
- 通过HAL_RCC_ClockConfig()函数设置
- 配置扩展外设时钟(可选)
- 通过HAL_RCCEx_PeriphCLKConfig()函数设置
注:
3 + 4 + 5 = sys_stm32_clock_init() //正点原子配置
- 通过HAL_RCCEx_PeriphCLKConfig()函数设置
外设时钟使能和失能
我们要使用某个外设,必需先使能该外设时钟!!!
1 | HAL库使能某个外设时钟的方法,如: |
sys_stm32_clock_init 函数(F1)
结合上一个md的图表来看,是对对应位的配置
HAL_RCC_OscConfig()函数
返回值:HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
1 | typedef struct |
HAL_RCC_ClockConfig()函数
返回值:HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)
1 | typedef struct |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chris!