时钟系统是单片机的重要组成部分,单时钟信号是单片机内部各个功能模块协调运行的基础。
所以了解MCU的第一步是先熟悉时钟。
首先,先找到datasheet中的时钟树。
STM32提供以下产生主时钟的时钟源
- HSI16 RC 内部高速时钟(16MHz)
- HSE OSC 外部高速时钟(4~48MHz)
- LSI RC 内部低速时钟(32kHz)
- LSE OSC 外部低速时钟(精确32.768 kHz或高达1MHz)
- I2S_CKIN 用于I2S1外围设备直接时钟输入的引脚
每个振荡器在不使用时都可以独立打开或关闭,以优化功耗。
STM32通过对主时钟进行除法或/和乘法来产生次级时钟
- HSISYS 通过HSI16 RC除以可编程的因子1~128得到
- PLLPCLK PLL块输出的时钟
- SYSCLK 通过选择LSE、LSI、HSE、PLLPCLK和HSISYS时钟
- HCLK 通过SYSCLK除以可编程的因子1~512得到
- PCLK 通过HSISYS除以可编程的因子1~16得到
- TPCLK 从PCLK导出的时钟,除APB预分频器分频因子设置为1以外,其余设置为PCLK频率的两倍
- HCLK8 通过HCLK除以可编程的因子8得到
了解了有那些时钟之后,就可以通过使用STM32CubeMX配置需要的时钟
当选择外部高速时钟或者外部低速时钟,选择晶体/陶瓷谐振器,MCU对应引脚会标记出来
以上就是配置时钟的过程了,如果还有什么不清楚的地方,欢迎留言。