RCC—使用HSE配置系统时钟

发布者:JoyfulSpirit最新更新时间:2022-03-15 来源: eefocus关键字:RCC  系统时钟 手机看文章 扫描二维码
随时随地手机看文章

RCC—使用HSE配置系统时钟

芯片提供时钟就要有时钟树

时钟树在参考手册RCC章节开头就有(这里的时钟树看到感觉眼睛打了马赛克,小弟截图技术有限)

在这里插入图片描述

什么是晶振?

晶振:晶体振荡器,用于各种电路中产生振荡频率,每个单片机里都会有晶振,给单片机提供时钟频率,振荡得越快,时钟频率就越高,单片机运行的速度就越快


解析时钟树的方法:(系统时钟)

时钟是由晶振提供的,首先要找到时钟的入口点。图中OSC_IN 和 OSC_OUT,这两个是外部晶振的引脚,所以时钟是从这里进入的。接有源晶振时,时钟从OSC_IN进入,OSC_OUT悬空。接无源晶振时,时钟从OSC_IN 和 OSC_OUT一起进入

时钟进入以后会经过PLL锁相环,进入前会经过一个M分频,进入PLL锁相环之后就会进入N倍频,输出时经过一个P分频,输出的时钟为PLLCLK

可以选择PLLCLK、HSE、HIS作为系统时钟

然后经过AHB总线的分频因子,成为HCLK作为AHB总线的时钟,或者再经过APB的分频因子作为APB1、APB2总线的时钟(根据参考手册AHB总线频率最大为180MHZ 、高速APB2总线频率最大为90MHZ 低速APB1总线频率最大为45MHZ)

上述分析的是时钟树的系统时钟,还有其他时钟RTC实时时钟、看门狗时钟、I2S时钟、以太网时钟、MCO输出时钟,这些等需要用到的时钟看吧


下面用固件库编写使用HSE配置系统时钟函数

(HSI也是同样的思路)


启动HSE,在头文件寻找HSE启动的函数void RCC_HSEConfig(uint8_t RCC_HSE)

等待HSE稳定ErrorStatus RCC_WaitForHSEStartUp(void)

这个函数是如何实现的:在这个函数中还调用了函数

FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG)

那先讲解这个函数是如何实现的:这个函数的功能是检查是否设置了指定的RCC标志。RCC的标志(RCC_FLAG)都会有自己的值,首先检查参数,然后得到RCC寄存器的位号(根据RCC的标志确定在RCC的哪个寄存器里),最后获得RCC寄存器的位置判断是否设置了指定的参数,然后返回值,如果设置了返回1,否返回0

判断HSE是否准备好,如果是返回1,否返回0

设置HCLK、APB1、APB2预分频因子

void RCC_HCLKConfig(uint32_t RCC_SYSCLK)

void RCC_PCLK1Config(uint32_t RCC_HCLK)

void RCC_PCLK2Config(uint32_t RCC_HCLK)

设置进入PLL锁相环的M分频因子 PLL锁相环的N倍频因子 出PLL锁相环的P分频因子 void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP, uint32_t PLLQ)控制系统时钟的频率就在于这几个分频因子

启动PLL void RCC_PLLCmd(FunctionalState NewState)

等待PLL稳定 使用了FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG)把RCC_FLAG设为RCC_FLAG_PLLRDY,若准备好返回1

设置PLLCLK为系统时钟void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)

读取状态位确保PLLCLK被选中为系统时钟

uint8_t RCC_GetSYSCLKSource(void)//该函数功能:返回时钟源用作系统时钟

若返回数值为PLLCLK数值,则PLLCLK被选为系统时钟

代码如下

函数的形参根据函数中需要传入的数据所设定


void HSE_SetSysclk ( uint32_t PLLM, uint32_t PLLN, uint32_t PLLP, uint32_t PLLQ)

{

    RCC_HSEConfig(RCC_HSE_ON);

    if(RCC_WaitForHSEStartUp()==SUCCESS)

    {

        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        RCC_PCLK1Config(RCC_HCLK_Div4);

        RCC_PCLK2Config(RCC_HCLK_Div2);

        RCC_PLLConfig(RCC_PLLSource_HSE,PLLM, PLLN, PLLP, PLLQ);

        RCC_PLLCmd(ENABLE);

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

        

        

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        while(RCC_GetSYSCLKSource()!=0x08);

    }

    else

    {

        while(1)

        {

            

        }

    }

}

关键字:RCC  系统时钟 引用地址:RCC—使用HSE配置系统时钟

上一篇:GPIO输出——固件库点LED GPIO输入——按键检测
下一篇:STM32 高级定时器 输出PWM (用DHT11测得的温度去调节RGB灯的亮度)

推荐阅读最新更新时间:2024-10-23 02:01

RCC 使用HSE/HSI配置系统时钟
开发平台 野火F429开发板 标准库 配置系统时钟首先要学会看时钟树,f429主频为180MHZ 时钟树 查看手册 时钟树如下图 现在我需要用到的时钟总线主要是:AHB、APB1、APB2 其他的以后用到的时候再看吧 1.HSE外部高速时钟信号 HSE由晶振提供,晶振又分有源晶振和无源晶振,无源晶振需要提供时钟电路才可产生振荡。 由图中可以看到 OSC_OUT和OSC_IN,采用无源晶振时,时钟从OSC_OUT和OSC_IN进入; 采用有源晶振从OSC_IN进入,OSC_OUT悬空。这里使用无源晶振25MHZ 2.PLL锁相环 HSE经过PLL 输入分频因子M(查手册得 2~63),成为时钟输入VCO时钟(1-2M
[单片机]
<font color='red'>RCC</font> 使用<font color='red'>HSE</font>/HSI<font color='red'>配置</font><font color='red'>系统</font><font color='red'>时钟</font>
RCC—使用HSE配置系统时钟
RCC—使用HSE配置系统时钟 芯片提供时钟就要有时钟树 时钟树在参考手册RCC章节开头就有(这里的时钟树看到感觉眼睛打了马赛克,小弟截图技术有限) 什么是晶振? 晶振:晶体振荡器,用于各种电路中产生振荡频率,每个单片机里都会有晶振,给单片机提供时钟频率,振荡得越快,时钟频率就越高,单片机运行的速度就越快 解析时钟树的方法:(系统时钟) 时钟是由晶振提供的,首先要找到时钟的入口点。图中OSC_IN 和 OSC_OUT,这两个是外部晶振的引脚,所以时钟是从这里进入的。接有源晶振时,时钟从OSC_IN进入,OSC_OUT悬空。接无源晶振时,时钟从OSC_IN 和 OSC_OUT一起进入 时钟进入以后会经过PLL锁相环,进入前会
[单片机]
<font color='red'>RCC</font>—使用<font color='red'>HSE</font><font color='red'>配置</font><font color='red'>系统</font><font color='red'>时钟</font>
STM32系统时钟RCC工作流程详解+配置函数中文注释+使用HSE代码
前言 STM32系统时钟RCC工作流程详解 提示:以下是本篇文章正文内容 一、时钟树 二、工作流程 1.配置外部高速时钟HSE HSE 是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从 4-16MHZ 不等。 HSE 最常使用的就是 8M 的无源晶振。当确定 PLL 时钟来源的时候,HSE 可以不分频或者 2 分频,这个由时钟配置寄存器 CFGR 的 位 17:PLLXTPRE 设置。 配置:设置为 HSE 不分频。 2.配置锁相环PLL时钟源 PLL时钟来源可以有两个,一个来自HSE,另外一个是 HSI/2,具体用哪个由时钟配置寄存器 CFGR 的位 16:PLLSRC 设置。 HSI 是内部
[单片机]
STM32<font color='red'>系统</font><font color='red'>时钟</font><font color='red'>RCC</font>工作流程详解+<font color='red'>配置</font>函数中文注释+使用<font color='red'>HSE</font>代码
STM32系统学习——RCC(使用HSE/HSI配置时钟
** STM32系统学习——RCC(使用HSE/HSI配置时钟) ** RCC :reset clock control 复位和时钟控制器。主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,STM32 的一切时钟的来龙去脉都会了如指掌。 一、RCC主要作用——时钟部分 设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK是多少)、设置APB2分频因子(设定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少);控制AHB/APB2/APB1这3条总线开启,控制每个外设时钟的开启。 对于SYSCLK、HCLK、PCLK2、PCLK1这4个时钟的配置一般是:PCLK2=HCLK=SYSCLK=PLLC
[单片机]
STM32系统学习——RCC(使用HSE/HSI配置时钟
RCC :reset clock control 复位和时钟控制器。主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,STM32 的一切时钟的来龙去脉都会了如指掌。 一、RCC主要作用——时钟部分 设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK是多少)、设置APB2分频因子(设定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少);控制AHB/APB2/APB1这3条总线开启,控制每个外设时钟的开启。 对于SYSCLK、HCLK、PCLK2、PCLK1这4个时钟的配置一般是:PCLK2=HCLK=SYSCLK=PLLCLK=72MHz,PCLK1=HCLK/2=36MHz.这个配置是库
[单片机]
STM32<font color='red'>系统</font>学习——<font color='red'>RCC</font>(使用<font color='red'>HSE</font>/HSI<font color='red'>配置</font><font color='red'>时钟</font>)
STM32F429 >> 6. RCC-使用HSE, HSI 配置时钟
本工程板级支持包文件适用于野火stm32f429 开发板。 编程要点 开启HSE/HSI,并等待HSE/HSI 稳定 设置AHB, APB2, APB1 的预分频因子 设置PLL 的时钟来源,设置VCO 输入时钟分频因子PLL_M,设置VCO 输出时钟倍频因子PLL_N,设置PLLCLK 时钟分频因子PLL_P,设置OTGFS, SDIO, RNG 时钟分频因子PLL_Q 开启PLL,并等待PLL 稳定 把PLLCLK 切换为系统时钟SYSCLK 读取时钟切换状态位,确保PLLCLK 被选为系统时钟 bsp_clk.c /** ************************************************
[单片机]
STM32F429 >> 6. <font color='red'>RCC</font>-使用<font color='red'>HSE</font>, HSI <font color='red'>配置</font><font color='red'>时钟</font>
RCC—使用 HSE HSI 配置时钟树梳理(在STM32平台下)
解剖RCC框图——时钟树(参考了火哥的使用手册和网上的一些资料,加上自己的理解) 下面是STM32F429的时钟树: 理解STM32的时钟是我们应用定时器等等的基础,首先 ,从系统时钟说起。 1.首先注意图中打蓝色圈的两个地方,HSE和HSI分别是外部时钟和内部时钟,其中HSE是高速的外部时钟信号,可接石英/陶瓷谐振器,或者接外部时钟源,HSE也可以直接做为系统时钟或者 PLL 输入(从蓝圈9处可以看出),频率范围为 4MHz~26MHz。HSE 我们使用的25M 的无源晶振。所以移植时一定要格外注意。 2.注意看图中蓝圈7的部分,这里是主锁相环倍频输出,用于产生系统需要的高速时钟信号,如图绿色箭头所示(STM32还有
[单片机]
<font color='red'>RCC</font>—使用 <font color='red'>HSE</font> HSI <font color='red'>配置</font><font color='red'>时钟</font>树梳理(在STM32平台下)
【STM32F103】RCC-使用HSE/HSI配置时钟
以上为STM32的时钟树,通过系统的启动文件,系统自动调用函数进行时钟初始化,所以我们在实际应用时不需要去写时钟这块,但是如果我们有特殊需求或者想要修改内部时钟的属性,则需要了解时钟树。以下以一个实验例子来测试,修改系统时钟: 1、通过HSE(高速外部时钟)来配置系统时钟: //HSE配置系统时钟 void HSE_SetSysClk( uint32_t RCC_PLLMul_x ) { ErrorStatus HSEStatus; // 把RCC 寄存器复位成复位值 RCC_DeInit(); // 使能 HSE RCC_HSEConfig(RCC_HSE_ON)
[单片机]
【STM32F103】<font color='red'>RCC</font>-使用<font color='red'>HSE</font>/HSI<font color='red'>配置</font><font color='red'>时钟</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved