006 - RCC时钟树(一)时钟树内容

news2024/12/27 15:29:53

006 - RCC时钟树(一)时钟树内容

本节内容一定要结合RCC时钟树和官方手册学习,如果看不明白的话,建议看一下野火官方的教程,火哥讲这节讲的很详细,看一遍基本就能理解了。

上节内容中分析了启动代码,在启动代码中看到开发板上电后,会先执行Reset_Handler复位程序,里面会调用SystemInit程序

; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]
        IMPORT  SystemInit
        IMPORT  __main
                 LDR     R0, =SystemInit				;此处调用了SystemInit,此函数的实现实在system_stm32f4xx.c中
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

SystemInit函数原型

/**
  * @brief  Setup the microcontroller system
  *         Initialize the Embedded Flash Interface, the PLL and update the 
  *         SystemFrequency variable.
  * @param  None
  * @retval None
  */
void SystemInit(void)
{
    /* FPU settings ------------------------------------------------------------*/
    #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    	SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
    #endif
    /* Reset the RCC clock configuration to the default reset state ------------*/
    /* Set HSION bit */
    RCC->CR |= (uint32_t)0x00000001;
    /* Reset CFGR register */
    RCC->CFGR = 0x00000000;
    /* Reset HSEON, CSSON and PLLON bits */
    RCC->CR &= (uint32_t)0xFEF6FFFF;
    /* Reset PLLCFGR register */
    RCC->PLLCFGR = 0x24003010;
    /* Reset HSEBYP bit */
    RCC->CR &= (uint32_t)0xFFFBFFFF;
    /* Disable all interrupts */
    RCC->CIR = 0x00000000;
    #if defined(DATA_IN_ExtSRAM) || defined(DATA_IN_ExtSDRAM)
    	SystemInit_ExtMemCtl(); 
    #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */       
    /* Configure the System clock source, PLL Multiplier and Divider factors, 
     AHB/APBx prescalers and Flash settings ----------------------------------*/
    SetSysClock();
    /* Configure the Vector Table location add offset address ------------------*/
    #ifdef VECT_TAB_SRAM
    	SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
    #else
    	SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
    #endif
}

在这里插入图片描述

stm32时钟树

1、HSE时钟

HSE:High Speed External Clock Signal,外部高速时钟。一般来源为有源晶振或无源晶振,其中有源晶振频率可以达到1-50M,而无源晶振频率在4-26M之间。在429芯片上,通过OSC_OUT和OSC_IN两个引脚输入。我用的野火F429开发板使用的是无源晶振(25MHz),启用HSE需要在RCC时钟控制器(RCC_CR)中将HSE_ON置位,如果此位未写1,则系统默认启动HSI时钟

2、HSI时钟

HSI:High Speed Internal Clock Signal,内部高速时钟,当设置使用HSE后,如果HSE发生故障没有起振,系统会自动切换到HSI,等到HSE启动成功后,则会切换回HSE,429的HSI是集成到芯片内部,频率为16HHz。启用HSI需要在RCC时钟控制器(RCC_CR)中将HSI_ON置位(未选择启用HSE或者HSE故障时,系统会强制启动,所以实际此位不用操作)。

3、PLL锁相环

不论是HSE还是HSI时钟,作为系统时钟来说远远不够,而外部晶振频率越高,其功耗也会增加,且误差也会增大,因此需要经过一系列操作,将HSE或HSI经过分频因子M分频后,在通过倍频因子N,之后在经过分频因子P,最后计算出锁相环时钟PLLCLK。
P L L C L K = ( H S E / M ) ∗ N / P PLLCLK = ( HSE / M ) * N / P PLLCLK=(HSE/M)N/P
在这里插入图片描述
锁相环通过RCC_PLLCFGR中PLLSRC寄存器进行配置,写0:选择HSI时钟作为PLL和PLLI2S时钟输入,写1:选择HSE振荡器作为PLL和PLLI2S时钟输入。
在这里插入图片描述

M:主PLL和PLLI2S输入时钟分频系数,通过PLLM寄存器进行配置,可选配置数值可以从2-63;

在这里插入图片描述

这里需要注意在官方手册中,关于M的配置中有提示项,建议将VCO输入控制在1M-2M之间,因此此处M我们设置在选择为25,计算后25M/25 = 1MHz;

N:用于控制VCO的主PLL的倍频系数,通过PLLN寄存器配置,可选配置数值为2-432

在这里插入图片描述

这里官方提示VCO输出频率应该介于192-432MHz之间,后续计算方便,选择配置为360。

P:主系统时钟的主PLL分频系数
在这里插入图片描述

官方提示最终输出频率上限不能超过180MHz,因此这里选择分频因子p的值为2。

在以上数据选择完后,经过计算,最终PLLCLK的值为180MHz。
P L L C L K = 25 / 25 ∗ / 360 / 2 = 180 M H z PLLCLK = 25 / 25 * / 360 / 2 = 180MHz PLLCLK=25/25/360/2=180MHz

4、系统时钟

在这里插入图片描述

SYSCLK,在429中,系统时钟最高为180MHz,F407最高为168MHz,其来源主要由HSI、HSE以及PLLCLK提供,当HSE以及PLLCLK发生故障时,硬件强制会自动强制使用HSI为SYSCLK提供时钟,此时系统运行将特别慢。此项选择由RCC时钟配置寄存器RCC_CFGR中SW位1:0选择可选配置如下:

  • 00:选择由HSI振荡器作为系统时钟;

  • 01:选择由HSE振荡器作为系统时钟;

  • 10:选择由PLL作为i系统时钟

  • 11:不选择。

    这里由于配置了锁相环(PLLCLK),则选择配置为10。

在这里插入图片描述

HCLK时钟

HCLK:AHB高速总线时钟,在F429中频率最高为180MHz,其主要为AHB总线外设、系统定时器(Systick)、内核(FCLK)提供时钟。可配置为不分频/2/4/8/16/64/128/258/512分频。

在这里插入图片描述

PCLK1时钟

APB低速预分频器,最高为45MHz,主要为APB1总线外设提供时钟,2倍频后为APB1总线的定时器提供时钟,最大可达到90MHz。由RCC_CFGR时钟配置寄存器PPRE1位控制。可配置为不分频/2/4/8/16分频。

在这里插入图片描述

PCLK2时钟

APB高速预分频器,最高为90MHz,主要为APB2总线外设提供时钟,2倍频后为APB1总线的定时器提供时钟,最大可达到180MHz。由RCC_CFGR时钟配置寄存器PPRE2位控制。可配置为不分频/2/4/8/16分频。

在这里插入图片描述

在时钟树中,看到除了P之外,还有两个分频因子Q和R,其中Q主要为PLL48CK提供时钟,主要用于全速USB和随机数发生器以及SDIO提供时钟。

而R主要是在F446芯片中使用到,这里不做说明。

5、其他时钟

RTC时钟

RTC:为芯片内部的RTC提供时钟,来源于HSE_RTC(HSE分频得到)、LSE(外部32.768KHz晶振提供)、LSI(32KHz),由RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制。

在这里插入图片描述

后面学到的看门狗时钟IWDGCLK就是由LSI提供的。

I2S时钟

由外部引脚I2S_CKIN或者PLLI2SCLK提供。

以太网PHY时钟

F429中没有集成PHY,所以只能外接PHY,野火F429上外接的是LAN8720,大小为50MHz。这里研究了一下野火的原理图,看到PHY芯片是由一个外部25MHz的晶振提供时钟,进入PHY芯片后,经过2倍频变为50HMz,在经过PA1引脚输入429中。

USB PHY时钟

同样429中没有集成PHY,野火上外接的是USB33000,USB PHY就由USB33000提供。

MCO时钟输出

MCO是将控制器的时钟通过外部的引脚输出,可以给外部设备提供时钟,在429上引脚为MCO1为PA8,由HSI、LSE、HSE、PLLCLK提供,MCO2为PC9,由HSE、PLLCLK、SYSCLK、PLLI2SCLK提供。这里可以通过MCO输出时钟到PHY芯片,可以省掉PHY所需的晶振,节约成本。软件中设置MCO输出后,可用示波器检测系统时钟是否配置正确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/555477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web缓存服务——Squid代理服务器应用

正向代理&#xff1a;代替客户端向服务端发送请求。 反向代理&#xff1a;代理服务端&#xff0c;将请求转发给多个服务端。 一、Squid代理服务器介绍 Squid 主要提供缓存加速、应用层过滤控制的功能。 1.1 代理的工作机制&#xff08;缓存网页对象&#xff0c;减少重复请求…

2023年,Facebook Messenger群发这样做

使用SaleSmartly的企业都知道&#xff0c;SaleSmartly&#xff08;ss客服&#xff09;能在 Facebook Messenger群发信息&#xff01;Facebook Messenger在全球最受欢迎通信软件中排名第三&#xff0c;紧追头两位的 WhatsApp和微信。善用 Facebook Messenger群发工具&#xff0c…

华为OD机试真题 Java 实现【区块链文件转储系统】【2023Q2 200分】

一、题目描述 区块链底层存储是一个链式文件系统&#xff0c;由顺序的N个文件组成&#xff0c;每个文件的大小不一&#xff0c;依次为F1,F2…Fn。 随着时间的推移&#xff0c;所占存储会越来越大。 云平台考虑将区块链按文件转储到廉价的SATA盘&#xff0c;只有连续的区块链…

为什么都在学python?

自然是因为Python简单易学且应用领域广&#xff01; Python近段时间一直涨势迅猛&#xff0c;在各大编程排行榜中崭露头角&#xff0c;得益于它多功能性和简单易上手的特性&#xff0c;让它可以在很多不同的工作中发挥重大作用。 正因如此&#xff0c;目前几乎所有大中型互联…

毕业三年月薪才21K,真是没出息......

“害&#xff0c;毕业三年月薪才拿21k,真失败&#xff0c;真的给同龄人拖后腿&#xff01;”这是人能讲出来的话&#xff1f;这就是凡尔赛天花板&#xff1f;这就是我公司的测试部门的人说出来的话&#xff0c;他计算机专业毕业三年&#xff0c;包括实习&#xff0c;在我们公司…

LeetCode:28. 找出字符串中第一个匹配项的下标

28. 找出字符串中第一个匹配项的下标 1&#xff09;题目2&#xff09;代码1.方法一&#xff1a;每个字符进行匹配2.方法二&#xff1a;截取字符串进行匹配 3&#xff09;结果1.方法一结果2.方法二结果 1&#xff09;题目 给你两个字符串 haystack 和 needle &#xff0c;请你在…

Dropwizard 开发环境搭建

Dropwizard是一个Java框架&#xff0c;其目标是提供高性能、高可靠的Web 应用程序的实现。 一、使用Maven原型创建项目 1、新建项目->选择Maven Archetype 填写好项目名称、路径、选择JDK版本&#xff0c;这里使用JDK11及以上的版本&#xff0c;如下图所示&#xff1a; 2…

自监督对比学习系列论文(一):无引导对比学习--MOCO,SimCLR

自监督对比学习 对比学习&#xff08;self-supervised learning&#xff09;的应用场景是用无标记或者少标记的数据进行模型的预训练以得到一个较好的预训练模型&#xff0c;然后便可将该模型轻松的迁移到到下游任务上。显而易见的&#xff0c;对比学习的难点在于我们如何在没有…

【论文下饭】PatchTST中的channel-independence

PatchTST中的channel-independence 总结PatchingChannel-independence A Time Series is Worth 64 Words: Long-term Forecasting with Transformers 时间&#xff1a;2022 引用&#xff1a;8 ICLR 2023 代码&#xff1a;https://github.com/yuqinie98/PatchTST 中文参考&#…

软件开发人技能变现方案来啦~

java单体服务Uniapp客户端 欢迎大家来关注java单体服务Uniapp客户端模式开发应用程序这个模式下产品的特点互联网大厂产品特点小服务小产品-存在价值普通人慢慢挣小钱 欢迎大家来关注 你好&#xff01; 这可能是你第一次来“莹未来”这里&#xff0c;郑重欢迎您。如果你想学习…

firewalld防火墙详细介绍

目录 一、firewalld概述 二、firewalld与iptables的区别 1.位置不同 2.配置存储位置不同 3.规则运行不同 4.防火墙类型不同 三、firewalld区域的概念 四、firewalld防火墙9个区域 1、trusted&#xff08;信任区域&#xff09; 2、public&#xff08;公共区域&#xf…

JavaScript中的tab栏切换制作(排他思想)

文章目录 实现效果图排他思想tab栏切换制作思路代码部分 实现效果图 整个页面分为2个部分&#xff0c;tab_list部分&#xff08;上半部分&#xff09;和tab_con部分&#xff08;下半部分&#xff09; tab_list部分包含5个li&#xff0c;它们分别与tab_con部分的5个div盒子一一…

Eyeshot Fem 2023.1 你选Fem还是Ultimate Crack

Eyeshot Fem--当然选Fem Everything in Ultimate, plus Geometry meshing and Finite Element Analysis. Scope Modules Image Gallery Features Scope Eyeshot Fem edition is designed for Geometry meshing and Finite Element Analysis. Modules Geometric modules includ…

《终结拖延症》重新拥有计划每天的自信和控制力

关于作者 威廉区瑙斯&#xff0c; 美著名心理治疗 专家 &#xff0c; 拥有 超过 30 年 心的 理治疗 经 &#xff0c;验 他 专 精的研究 领域 &#xff0c; 是 为 代 都 市 群提 供负 面 心 理 引 导 和 治疗 &#xff0c; 比 如 抑郁 、 心 理 亚健 康 、 拖 延 症 等 等 。 除…

redis未授权访问漏洞利用+redis日志分析

redis未授权访问漏洞利用redis日志分析 redis未授权访问 远程连接redis kali: redis-cli -h IP redis常用语句 set key “value” 设置键值对 get key 获得值 incr intkey 数字类型值加1 keys * 获取当前数据库中所有的键 config set dir /home/test 设置工作目录 config set…

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载

VMware ESXi 6.5 U3 Final - ESXi 6 系列最终版下载 VMware ESXi 6 Standard 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-6/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org VersionRelease NameRelease …

weblogic CVE-2014-4210 SSRF漏洞

CVE-2014-4210 SSRF漏洞 Weblogic 中存在一个SSRF漏洞&#xff0c;利用该漏洞可以发送任意HTTP请求&#xff0c;进而可以攻击内网中Redis、Fastcgi等脆弱组件 该漏洞存在于/uddiexplorer/SearchPublicRegistries.jsp SSRF&#xff1a;服务端请求伪造&#xff0c;伪造存在该漏洞…

Spring : XML配置 JavaBean源码解析

文章目录 前言一、xml 加载 Bean 对象总结XML加载Bean对象 前言 跟着大佬走&#xff01;&#xff01;&#xff01;&#xff01; https://github.com/DerekYRC/mini-spring 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、xml 加载 Bean 对象 大家先…

企业型OV,增强型EV证书开通审核流程

选购 OV、EV型证书需要是企业用户&#xff0c;申请过程中需要提交企业资料。 选择证书品牌及型号 管理中心补全审核资料 下载“确认函”签字盖章并扫描&#xff0c;再上传。 审核部门联系确认企业信息&#xff0c;&#xff08;过需要7-10个工作日&#xff09; 审核通过&…

单商户高级版商城系统v2.3.0更新啦~

​likeshop单商户高级版商城系统更新至v2.3.0版本~主要更新内容如下&#xff1a; 新增 商品增加限购功能 小程序新版本更新提示 商品分类创建后可以显示该分类下有多少商品 积分商品列表新增封面图 商品支持批量移动分类 后台产品正版检测 优化 分销功能关闭时&#xff…