【学习笔记】STM32F407探索者HAL库开发(五)F407时钟系统配置


在这里插入图片描述

1 F407_CubeMX时钟树配置(传送门)

在这里插入图片描述
在这里插入图片描述

  1. 宏定义 HSE_VALUE;
  2. 调用HAL_RCC_OscConfig()函数,配置输入时钟源;
  3. 调用HAL_RCC_ClockConfig()函数,配置系统时钟源以及 SYSCLK、AHB、APB1 和 APB2 相关参数;
  4. 在main函数中调用sys_stm32_clock_init()函数并设置形参;

注意:第2点和第3点中的函数均在sys_stm32_clock_init()函数中调用,main函数中只调用sys_stm32_clock_init()函数,且sys_stm32_clock_init()函数的描述在sys.c中,main.c中只配置该函数的四个形参。

为便于查找,在后续新项目的时钟系统配置时可以直接按照下图参数进行配置。具体详解见后文。

2 STM32F407时钟树

STM32内部也是由多种多样的电路模块组合在一起实现的。当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。为了解决这个问题,在单片机系统中,设计时以时序电路控制替代纯粹的组合电路,在每一级输出结果前对各个信号进行采样,从而使得电路中某些信号即使出现延时也可以保证各个信号的同步,可以避免电路中发生的“毛刺现象”,达到精确控制输出的效果。

由于时序电路的重要性,因此在MCU设计时就设计了专门用于控制时序的电路,在芯片设计中称为时钟树设计。由此设计出来的时钟,可以精确控制我们的单片机系统,这也是我们这节要展开分析的时钟分析。为什么是时钟树而不是时钟呢?一个MCU越复杂,时钟系统也会相应地变得复杂,如STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。

对于STM32F4系列的芯片,正常工作的主频可以达到168Mhz,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十Khz的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。

2.1 STM32F407时钟系统图

STM32本身非常复杂,外设非常的多,为了保持低功耗工作,STM32的主控默认不开启这些外设功能。用户可以根据自己的需要决定STM32芯片要使用的功能,这个功能开关在STM32主控中也就是各个外设的时钟。

如下图为一个简化的STM32F4时钟系统。图中已经把我们主要关注几处标注出来。

在这里插入图片描述

A部分表示输入时钟源,可分为外部时钟源和内部时钟源;
B为锁相环“PLL”;
C为我们重点需要关注的系统时钟源选择器,此项决定了MCU的系统主时钟“SYSCLK”的大小;AHB预分频器将SYSCLK分频或不分频后分发给其它外设进行处理,包括到D部分的Cortex-M内核系统的时钟和使能单元。
E为定时器以及其它外设的时钟源APB1/APB2。F是STM32的MCO时钟输出功能。

2.2 STM32F103时钟树简图

2.2.1 高速部分

在这里插入图片描述
HSE 4~26 MHz,HIS 16 MHz,F407的SYSCLK最大168MHz,无法达到,所以要/M分频之后,通过PLL锁相环,F1系列的锁相环只有一个2-16倍频器,F4的PLL中首先会经过一个*N的倍频器,再经过一个/P分频,作为系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值