基于STM32时钟系统的开发及配置

发布者:AdventureSeeker最新更新时间:2024-09-14 来源: elecfans关键字:STM32  时钟系统  开发  配置 手机看文章 扫描二维码
随时随地手机看文章

一、背景

最近做个项目,需要使用STM32,还是以前一样的观点,时钟就是MCU心脏,供血即时钟频率输出,想要弄明白一个MCU,时钟是一个非常好的切入点。言归正传,网上已经有太多大神详述过STM32的详细配置方法了,在此就简单介绍下STM32时钟系统,以及如何配置做个简单记录,方便以后的快速开发。


二、正文

废话不多说,上一张STM32F10xx的时钟树图:

基于STM32时钟系统的开发及配置
 

由图可知,STM32F10XX有两级时钟

第一级时钟

* 高速内部时钟(HSI)

* 锁相环时钟(PLLCLK)

* 高速外部时钟(HSE)

第二级时钟

* 低速内部时钟(LSI)

* 低速外部时钟(LSE)

又由图可知,

* HSE由外部晶振从“OSC_OUT”,“OSC_IN”两脚输入提供。

* LSE由外部晶振从“OSC32_OUT”,“OSC32_IN”两脚输入提供。

* HSI由8MHZ高速内部RC震荡电路提供。

* LSI由40kHZ低速内部RC震荡电路提供。

STM32F10XX还可通过MCO脚向外提供时钟输出。时钟来源有PLLCLK/HSI/HSE/SYSCLK,由MCO选择器来选择。

研究过时钟来源,再来研究时钟的去向,MCU自身要能正常运作,即需要一个时钟,这个时钟既是系统时钟(SYSCLK),而基本上所有外设的时钟均来自于这个系统时钟(SYSCLk)。然后由系统时钟对外提供各种外设时钟。详见图。

当然,也有例外,USB时钟必须为48MHZ,这里的USB时钟(USBCLK)由PLLCLK直接提供,RTC时钟(RTCCLK)也不是来源于系统时钟(SYSCLK),详见图。

时钟结构大体也就如此,不再深究,网上有许多更加深入的讲解,接下来说说如何去配置。用代码来说明问题:

先贴文件“system_stm32f10x.c”,此文件即库文件。里面有一个很重要的函数“SystemInit()”

解析过STM32启动代码的朋友都应该知道,这个函数跑在进入main函数之前,里面做的事情即是配置系统时钟。


关键字:STM32  时钟系统  开发  配置 引用地址:基于STM32时钟系统的开发及配置

上一篇:STM32系统时钟和延迟函数初始化
下一篇:STM32电源框图解析

推荐阅读最新更新时间:2026-03-25 10:46

stm32的RCC系统时钟配置
一直以来,我使用的系统时钟都是默认设置,没有经过修改,也一直能用,但是一直不清楚如何一步步配置,现在知道怎么改了,所以把修改的方法写下来供参考。 很全很细的介绍请看这里 https://wenku.baidu.com/view/3c11ec1925c52cc58bd6bed8.html 想复制一下,随便改改就能用请看下面。重点是注释 首先贴我从野火f103抄来的,经过修改的代码 1 void HSE_SetSysClockTo72(void) 2 { 3 __IO uint32_t StartUpCounter = 0, HSEStartUpStatus = 0; 4 5 // 把RCC外设初始化成
[单片机]
STM32系统时钟配置
STM32的SYSCLK(系统时钟)可由三种不同的时钟源来驱动,分别是HSI振荡器时钟、HSE振荡器时钟、PLL时钟。这些设备还拥有2种二级时钟源: 1、低速内部RC(LSI RC)振荡器,频率在30~60KHZ之间变化,为了方便计算我们一般估算为40KHZ,它主要为独立看门狗提供时钟源,或通过相关寄存器配置驱动RTC(RTCCLK),用于从停机/待机模式下自动唤醒系统。 2、使用32.768KHZ的低速外部晶体时钟来驱动RTC(RTCCLK)。 为减小功耗,STM32的任一时钟源都可以独立地开启或关闭。 注意:1、当HSI(高速内部时钟)作为PLL时钟输入时,SYSCLK得到的最大频率为36MHZ(有些写的是64MHZ)。SD
[单片机]
<font color='red'>STM32</font><font color='red'>系统</font><font color='red'>时钟</font><font color='red'>配置</font>
STM32单片机的原理详解 STM32时钟系统配置方法
1.概述 时钟 是单片机的脉搏,是单片机的驱动源,使用任何一个外设都必须打开相应的时钟。这样的好处是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的效果。 每个时钟 ti ck,系统都会处理一步数据,这样才能让工作不出现紊乱。 2.原理 首先,任何外设都需要时钟, 51单片机 , STM32 ,430等等,因为 寄存器 是由D触发器组成的,往触发器里面写东西,前提条件是有时钟输入。 51单片机不需要配置时钟,是因为一个时钟开了之后所有的功能都可以用了,而这个时钟是默认开启的,比如有一个水库,水库有很多个门,这些门默认是开启的,所以每个门都会出水,我们需要哪个门的水的时候可以直接用,
[单片机]
<font color='red'>STM32</font>单片机的原理详解 <font color='red'>STM32</font><font color='red'>时钟</font><font color='red'>系统</font>的<font color='red'>配置</font>方法
STM32入门系列-STM32时钟系统时钟初始化配置函数
在前面推文的介绍中,我们知道STM32系统复位后首先进入SystemInit函数进行时钟的设置,然后进入主函数main。那么我们就来看下SystemInit()函数到底做了哪些操作,首先打开我们前面使用库函数编写的LED程序,在system_stm32f10x.c文件中可以找到SystemInit()函数,SystemInit()代码如下: void SystemInit (void) { /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */ RCC- CR |= (ui
[单片机]
STM32系统时钟设置,采用外部有源晶振相关配置问题
今天在调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变。程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢。 查找程序发现在系统时钟初始化时,RCC_HSEConfig(RCC_HSE_Bypass); 语句配置不对,此语句解释为HSE晶振被外部时钟旁路。指将芯片内部的用于外部晶体起振和功率驱动等的部分电路和XTAL_OUT引脚断开,这时使用的外部时钟是有源时钟或者其他STM32提供的CCO输出等时钟信号,直接单线从XTAL_IN输入,这样即使外部有晶体也震荡不起来了。 因为之前用的是有源晶振,接法如下图1:HSE配置如下:RCC_HSECon
[单片机]
如何在MDK中查看系统时钟配置stm32编程技巧小记)
最近stm32f103编程中遇到好多个问题,都是因为系统时钟配置不正确引起的 SYSCLOCK AHBCLK APB1CLK APB2CLK 这些时钟配置如果搞不清楚,很容易引起编程错误,查找起来也不方便,还有像flash读写操作,必须开启HSI内部时钟,怎么确定你的时钟开启了没有,如果通过寄存器每条语句去排查,耗时,并且前面的配置可能在后面被冲掉了,怎么能有一种比较好的方式去查看时钟配置是否正确呢? 通过了解,我认识到mdk带的system viewer widow 对应数据手册可以帮助我们来查看配置,排除错误。 在仿真界面,在时钟配置之后设置断点,运行到断点 在system viewer widow中点击RCC查看寄存器
[单片机]
如何在MDK中查看<font color='red'>系统</font><font color='red'>时钟</font><font color='red'>配置</font>(<font color='red'>stm32</font>编程技巧小记)
STM32系统时钟设置,采用外部有源晶振相关配置问题
调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变。程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢。 查找程序发现在系统时钟初始化时,RCC_HSEConfig(RCC_HSE_Bypass); 语句配置不对,此语句解释为HSE晶振被外部时钟旁路。指将芯片内部的用于外部晶体起振和功率驱动等的部分电路和XTAL_OUT引脚断开,这时使用的外部时钟是有源时钟或者其他STM32提供的CCO输出等时钟信号,直接单线从XTAL_IN输入,这样即使外部有晶体也震荡不起来了。 因为之前用的是有源晶振,接法如下图1:HSE配置如下:RCC_HSEConfig
[单片机]
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
[单片机]
RCC 使用HSE/HSI<font color='red'>配置</font><font color='red'>系统</font><font color='red'>时钟</font>
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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