stm32笔记3 -stm32f4时钟树和时钟控制

一、STM32f4时钟树(图)

在这里插入图片描述
附:
基本概念:

  • 等腰梯形:选择器,从若干个不同的时钟输入,选择其中一个输出
  • /M 为M分频,把频率变为原来的1/M
  • ×N 为N倍频,把频率变为原来的N倍

注:

  • MCO最大输出频率有100M
  • 任何外设在使用之前要先使能对应的时钟
  • 对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗

二、STM32时钟源(5个)

① LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
② LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC
③ HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。
④ HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。
⑤ PLL为锁相环倍频输出。STM32F4有两个PLL:

  • 主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。
    • 第一个输出PLLP用于生成高速的系统时钟(最高168MHz)
    • 第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。
  • 专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。

三、系统时钟(SYSCLK)

在上图的“系统时钟”标识处可以看出,系统时钟可以由三种不同的时钟源来驱动,分别为:
● HSI 振荡器时钟
● HSE 振荡器时钟
● 主 PLL (PLLCLK) 时钟
一般来说多数是选择使用PLLCLK时钟来驱动系统时钟,因为PLLCLK的时钟频率最高可以达到168MHz,比HSI和HSE要高。
而主PLL时钟的时钟频率是可以通过用户自行配置的,在上图的标识⑤处,下面是PLLCLK的计算公式:
PLLCLK = f M × N P \frac{f}{M} \times \frac{N}{P} Mf×PN
其中f为HSI或者HSE频率,通过选择器自行选择,M N P通过RCC_CFGR寄存器来设置关于STM32F40xx时钟配置

1. CSS时钟安全系统

一般来说系统时钟是使用PLLCLK作为时钟源,而PLLCLK默认是使用HSE作为时钟源,但是HSE是外部时钟,如果这个外部时钟出现了问题,那么将间接导致系统时钟的错乱,这个时候CSS系统会在 系统时钟源选择器(上图中的SW) 切换HSI来驱动系统时钟,保证系统还能执行。

2. AHB与APB
  • AHB(Advanced High performance Bus),高级高性能总线,这是一种 “系统总线”,分频后的时钟标识为HCLK。
    AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
  • APB(Advanced Peripheral Bus),这是一种外围总线,分频后的时钟标识为PCLK。
    APB主要用于低带宽的周边外设之间的连接,例如UART、1284等,它的总线架构不像 AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。

AHB预分频器是通过操作RCC相关寄存器的RCC_CFGR寄存器,对HPRE进行设置,当设置成1分频,那么HCLK的频率等于系统时钟的频率。

四、RCC寄存器、头文件和固件库源文件(参考)

RCC常用寄存器

  • RCC_CR (RCC clock control register)RCC 时钟控制寄存器
  • RCC_PLLCFGR(RCC PLL configuration register)RCC PLL 配置寄存器
  • RCC_CFGR(RCC clock configuration register)RCC 时钟配置寄存器

RCC相关头文件和固件库源文件

  • 头文件: stm32f4xx_rcc.h
  • 源文件:stm32f4xx_rcc.c

时钟使能配置:
RCC_HSICmd, RCC_LSICmd, RCC_PLLCmd, RCC_PLLI2SCmd, RCC_PLLSAICmd, RCC_RTCCLKCmd,RCC_AHBxPeriphClockCmd
RCC_APBxPeriphClockCmd

时钟源和时钟相关配置:
RCC_HSEConfig, RCC_LSEConfig, RCC_PLLConfig, RCC_PLLI2SConfig, RCC_PLLSAIConfig, RCC_MCO1Config, RCC_MCO2Config, RCC_SYSCLKConfig, RCC_HCLKConfig,RCC_PCLK1Config,RCC_PCLK2Config,RCC_RTCCLKConfig,RCC_I2SCLKConfig

外设复位函数
RCC_AHB1PeriphResetCmd,RCC_AHB2PeriphResetCmd,RCC_AHB3PeriphResetCmd,RCC_APB1PeriphResetCmd,RCC_APB2PeriphResetCmd

状态参数获取参数:
RCC_GetSYSCLKSource,RCC_GetClocksFreq,RCC_GetFlagStatus,RCC_ClearFlag

RCC中断相关函数 :
RCC_ITConfig,RCC_ClearITPendingBit,RCC_GetITStatus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值