洋桃电子STM32F407单片机入门教程笔记一:RCC时钟设置

此文档作为对洋桃电子STM32F407单片机视频的整理,B站链接:2023更新 STM32入门F4= STM32F407单片机入门教程=WIFI连接阿里云物联网+CubeMX+HAL库+TFT彩屏+杜洋主讲_哔哩哔哩_bilibili

由于单片机内部的时钟结构都是相互关联的,一个时钟源出发可以供给多个功能,类似于树根、树杆、树枝、树叶的树状结构,所以我们称RCC时钟的整体结构为时钟树。

1. STM32F407ZGT6数据手册中的时钟树

数据手册上的时钟树图仅用于对连接关系的展示,需要熟悉的是在CubeMX图形界面中的时钟树视图。

时钟功能可分为“内核与外设时钟”和“独立时钟”两部分,单片机设计者把这些功能(独立时钟)独立出来是有用意的。

RTC时钟需要在内核不工作时也能持续走时,所以分配了专用的LSI和LSE时钟源。

独立看门狗用于监测单片机的工作状态,当单片机程序出错时独立看门狗会复位单片机。

USB接口对数据传输的稳定性要求高,于是配有专用的48MHz时钟。

IIS总线应用于高速音频接口,也采用了独立时钟。

所谓“独立”仅是指时钟输入未经过SYSCLK时钟分配,这些功能在程序上和其他功能没有区别,依然受到RAM内核的操控。

2. 单片机可选的时钟源

3.CubeMX图形界面上设置时钟的方法

(1)将HSE设置为晶体/陶瓷振荡器

(2)将LSE设置为晶体/陶瓷振荡器

(3)若要开启IIS总线的时钟输入

(4)若出现错误

选项卡出现红叉,设置项标红表示频率超出范围,如果不理会出现红色好亮的功能无法正常运行。所以看到红色高亮显示时要重新设置。

4. CubeMX图形界面上时钟标注说明

SYSCLK是系统时钟,除去独立时钟之外,SYSCLK时钟是单片机的“根时钟”,ARM内核与各功能外设时钟都由此分配而来。它代表着单片机的最大频率,频率越大速度越快。系统时钟作为源头分配给各内部总线和功能。可通过选择器3选择3个输入源,①通过HSI(没有经过预分频器和倍频器)直接给SYSCLK时钟16MHz的固定频率。②通过HSE(需要外接4~26MHz晶振电路),选择此项后的系统时钟频率等于HSE外接晶振的频率。③通过PLLCLK,是经过预分频器、倍频器和选择器分配后的频率,选择此项可在不改变外接晶振频率的情况下对系统时钟进行超频或降频。STM32F407的SYSCLK时钟最大值是168MHz。

最终频率5是以太网络功能时钟,它由SYSCLK时钟 (最终频率3) 直接连接,开启ETH以太网功能后,以大网功能的频率等于系时钟频率。

SYSCLK经过经过“分频器5”到达“最终频率6”HCLK时钟,HCLK时钟通过内部高速数据总线AHB把频率提供给ARM内核、存储控制器、中断控制器、DMA等内核功能,可通过设置“分频器5”降低HCLK频率,但通常会将HCLK和SYSCLK保持一致。

SYSCLK时钟经过“分频器6”到达“最终频率7”Cortex系统定时器时钟。它是单片机内包含着ARM Cortex-M4系统单元所使用的定时器,通过“分频器6”可设置为不分频 (/1) 或8倍分频 (/8),这里的设置只涉及Cortex内核功能,一般情况下使它与SYSCLK保持一致。

SYSCLK时钟连接到“最终频率8”FCLK时钟。FCLK全称是自由运行时钟,作用是专为ARM内核提供运行时钟频率,它与HCLK的区别是HCLK是从AHB总线电路上提供时钟而FCLK不受总线限制,即使AHB总线停止工作,FCLK时钟也能直接向ARM内核提供时钟。由于内核时钟与AHB总线时钟必须频率相同才能工作所以这两个时钟直接连接(频率相同)。

 最终频率9~12是PCLK时钟部分的4个最终频率,PCLK时钟的作用是给单片机外设功能提供时钟(ARM内核以外的单片机内部功能)。PCLK时钟分配给APB1总线和APB2总线两个部分,每条总线上都挂接着不同的单片机内部功能。APB1外设时钟的最大频率是42MHz。APB2外设时钟的最大频率是84MHz。当在项目开发中需要设置某功能的时钟频率,则要在单片机数据手册找到时钟树结构图,找到该功能挂接在APB1还是APB2,然后再设置总线频率。

独立时钟RTC:

第一个输入源是HSE外部高速时钟经过“分频器1”可设置2~31分频值。

第二个输入源是LSE外部32.768KHz低速时钟,未经过分频和倍频直接输入RTC时钟得到32.768KHz最终频率,这是得到最精准1秒走时的RTC时钟源。

第三个输入源是LSI内部32KHz低速时钟未经过分频得到32KHz最终频率。

独立看门狗用于监测单片机的工作状态,当单片机程序出错时独立看门狗会复位单片机。看门狗时钟必须独立于系统时钟之外,保持着“独立第三方”地位。

独立看门狗时钟直接引入32KHz的LSI内部低速时钟,保证输入源的稳定可靠。

看门狗时钟固定频率是32KHz 不允许修改。USB功能是指单片机内置的USB主设备和从设备接口,此功能独立工作,USB时钟频率允许修改,通过“选择器2”可切换HSI或HSE输入源,通过“分频器2”“分频器4”“分频器3 ”“倍频器1”来设置频率值,需要注意 只有“分频器4”是USB时钟专属,其他都与系统时钟共享设置,USB时钟的固定频率是48MHZ,当开启USB功能时必须使之最终频率是48MHz否则会出现警告,不开启此设置不需要设置此项。

最终频率15~16是两个时钟频率输出功能,缩写是MCO,STM32F40ZG单片机上MCO1复用在PA8端口,MCO2复用在PC9端口,开启MCO时钟输出功能的方法如下图。勾选后再进入时钟树视图,MCO部分的选择器和分频器才能进行修改,通过“选择器5~6”可以切换四个时钟输入源。其中PLLCLK是经过“分频器3”之后的时钟频率,PLLI2SCLK是经过“分频器9”之后的时钟频率。时钟输出功能用于给其他芯片提供时钟基准。

5. 程序代码中的时钟讲解

在图形界面里设置的时钟树选项,在生成代码后会转化成程序代码存放在工程文件里,为了能在未来的编程中修改这些RCC设置我们需要了解RCC时钟的程序代码,并能与图形界面上的设置项联系起来。

单片机在最开始运行时并不是从main函数开始,而是先运行汇编语言的启动文件,启动文件里对单片机的RAM、FLASH 中断等基础功能进行初始化。

CubeMX中设置的时钟选项在程序代码中的样子, SystemClock_Config函数是RCC时钟配置函数,图形界面中与RCC相关的配置都保存在此函数里。

6.修改CubeMX的配置,例如要修改AHB总线时钟的预分频系数。

7. 在程序运行中修改时钟设置的方法


  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值