3.时钟的配置

(一)既然外设只要系统时钟管理,为什么要分那么多时钟源?

  • 多个时钟源可以在单个时钟源发生故障时,起到救急的作用
  • 一个外设有多个时钟源,可以根据需要选择相应频率的时钟源

(二)为什么我们需要配置时钟?

实际上,当我们创建工程导入启动文件的时候,在main函数开始调用之前,启动文件就已经调用了SystemInit函数对系统时钟进行初始化了。(这里说下启动文件的5个作用,设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main最终去到C的世界)。
看stm32的固件库提供的库函数(stm32f10x为例),系统只提供了五种频率,所以需要我们配置。
在这里插入图片描述

(三)四个时钟的用处总结(频率是F1的)

  • HSE 外部高速时钟:外部晶振提供信号,时钟频率一般在4-16MHz,是经常会用到的时钟源
  • HSI 内部高速时钟:内部RC震荡电路提供信号,时钟频率为8MHz,所以频率会随着温度产生漂移,很不稳定,所以一般不使用此时钟信号
  • LSE 外部低速时钟:外部晶振提供信号,时钟频率一般为32.768KHz,一般用于RTC实时时钟
  • LSI 内部低速时钟:内部RC振荡电路提供信号,时钟频率一般为40KHz,一般用于独立看门狗时钟

(四)关于SystemInit()函数

系统初始化时钟的流程:startup(汇编程序) -> SystemInit() -> SetSysClock() -> SetSysClockTo72() -> main().系统会默认设置为72MHZ

(五)时钟的配置步骤

  • 配置HSE_VALUE,告诉HAL库外部晶振频率,stm32xxxx_hal_conf.h
  • 调用SystemInit()函数,在启动文件中调用, 在system_stm32xxxx.c定义
    第1,2步可以理解为开启HSE,等待开启并保证没有异常,第二步设定了默认的频率
  • 配置时钟源,配置PLL,HAL_RCC_OscConfig()函数
  • 选择系统时钟源,配置总线分频器,HAL_RCC_ClockConfig()函数
    第3,4步可以理解为配置好PLL、APB1、APB2、ABH的分频因子
  • (H7类特有)配置扩展外设时钟,HAL_RCCEx_PeriphCLKConfig()函数
    第5步是为了保证外设得到了时钟
    第3,4,5步合在一起就是sys_stm32_clock_init()操作

(六)两个函数的内部的配置选择(可以根据手册看各种设置)

F1:
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/7732943f13674bcd831a5ea6ee94bf6c.png
F4/F7:
在这里插入图片描述
在这里插入图片描述
H7:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

(七)关于CUBEMX配置时钟

在这里插入图片描述
三个选项的介绍:

  1. BYPASSS Clock Source:外部时钟源(HSE旁路)模式
    无需使用外部晶体模式下所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。
  2. Crystal/Ceramic Resonator:外部晶体/陶瓷谐振器(HSE晶体)模式
    该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。
  3. Disable:禁用
    在这里插入图片描述在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值