众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F4的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不是很简单吗?为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。
三种不同的时钟源可被用来驱动系统时钟(SYSCLK)
HSI振荡器时钟
HSE振荡器时钟
PLL时钟
这些设备有以下两种二级时钟源:
32kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。RTC用于从停机/待机模式下自动唤醒系统。
32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。
由时钟控制器的时钟树可以看出,STM32F4在应用中可以选择外部晶体或者内部RC振荡器来驱动内核和外设,像以太网,USB,I2S和SDIO需要专用时钟。AHB总线最高支持168MHz的时钟,通过AHB总线分频,APB2最高支持84MHz,APB1最高支持42MHz。
所有的外设驱动全部来自SYSCLK除了下面几个:
USBOTGFS的时钟(48MHz)、随机信号发生器时钟(《=48MHz)和SDIO时钟(《=48MHz)全部来自PLL48CLK。
I2S时钟,为了达到高性能的要求,I2S时钟可以用内部时钟PLLI2S或者使用外部时钟,通过I2S_CLKIN引脚输入得到。
USBOTGHS(60MHz)需要外部PHY芯片提供。
以太网时钟(TX,RX和RMII)也需要外部PHY芯片提供时钟。
RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。定时器时钟频率分配由硬件按以下2种情况自动设置:
如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。
否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。
关键字:STM32F4 时钟系统 RTC
引用地址:
STM32F4的时钟系统的实现方法
推荐阅读最新更新时间:2024-11-09 11:58
STM8L RTC总结初始化和配置
配置RTC时钟源 配置RTC时钟源为LSE,1分频,即32768Hz。 等待CLK_CRTCR:RTCSWBSY位复位,然后设置CLK_CRTCR值为0x10; 等待CLK_ECKCR:LSERDY位置位,标识LSE时钟源已稳定可用; 等待CLK_ECKCR:LSEON位置位,标识LSE时钟源已启用。 解除RTC 寄存器 保护 执行以下操作顺序: 写0xCA到寄存器RTC_WPR; 写0x53到寄存器RTC_WPR。 写其它值到RTC_WPR,则自动激活RTC寄存器保护功能。 配置日历功能 配置步骤如下: 进入初始化模式,置位RTC_ISR中INIT位;并等待初始化标志位(INITF)置位; 配置ck_spre时
[单片机]
STM32F407 串口配置步骤
介绍STM32F407串口配置步骤,完成串口的数据发送与接收、实现中断接收,支持printf重定向。 STM32F407 串口配置说明 STM32F4 的串口资源相当丰富的,功能也相当强劲,STM32F407ZGT6 最多可提供 6 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA 等。 【1】串口硬件引脚分析 【2】串口复用引脚介绍 串口寄存器介绍在手册第26章 GPIO口复用功能引脚配置 F407串口对应的引脚 配置复用功能的寄存器 串口时钟频率配置分析 【3】串口1配置示例
[单片机]
基于STM32H750的RTC自动唤醒
STM32 H750 的 实时时钟 是一个独立的 BCD 定时器 /计数器,且带了日历功能,它提供一个日历 时钟 、两个可 编程 闹钟中断,以及一个具有中断功能的周期性可编程唤醒标志。 此外RTC 还有自动唤醒单元,RTC还可以补偿闰年闰月等等,还有备份区域(BKP)写保护,这些这里不细说了。 RTC 的简化框图 时钟和分频 STM32H750 的 RTC 时钟源(RTCCLK)通过时钟控制器,可以从 LSE、LSI、HSE 时钟三选一,如图所示,有两个预分频器RTC_PRER ck_spre 的时钟可由如下计算公式计算: Fck_spre = Frtcclk/ 图中,ck_apre 也可作为 RTC 亚秒递减计数器(
[单片机]
STM32F407(CubeMX+HAL+USB(vcp))移植rosserial和ROS通信
前言 之前尝试过移植好rosserial的stm32通过串口和ROS系统建立通信,但无奈在类似于发布IMU类似的数据量很大的消息或消息的发布频率较高时经常会出现一些问题(发布频率达不到设定要求,启动rosserial的终端会报一些警告和错误),在一般的学习中还可以,但在实际的应用中基本达不到使用要求。 写道这想说明一点:我对整个rosserial内部的通信机制也不是很了解,类似于通信速度达到多少可以满足通信速度的需求,如何测试通信速度等等问题(我也很纳闷为什么串口就会存在这些问题),如果大家有什么见解欢迎交流。 一、基于STM32CubeMX建立STM32F407USB虚拟串口基本工程 配置STM32F407单片机的时钟源
[单片机]
晶振没有内置到芯片中的原因 stm32f10x系统时钟工作原理
有一些电子设备需要频率高度稳定的交流信号,而LC振荡器稳定性较差,频率容易漂移(即产生的交流信号频率容易变化)。 在振荡器中采用一个特殊的元件——石英晶体,可以产生高度稳定的信号,这种采用石英晶体的振荡器称为晶体振荡器。 电子元器件的小型化趋势,有力促进了当下社会的发展进步,电子元器件越小,为主板节约的空间越大,因此,有人异想天开,如果能将晶振电路封装到芯片(如时钟芯片)内部将是多么完美,就如同有源晶振在无源晶振的基础内置振动芯片,就无需外部的电容电阻等元器件了。 但实际出于各种原因,晶振并没有内置到芯片中。这究竟是为什么呢? 原因1、早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实
[单片机]
STM32常见问题:低温下部分产品RTC不工作的问题探析
前言 客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正常,但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的。 问题跟进 通过与客户邮件沟通,了解到客户使用的MCU型号是STM32F030C6T6TR。在产品的主从结构中主要用作电源管理和时钟管理。通过客户的描述,似乎相同型号不同片子都存在较大的差异。 由于时间紧急,在了解到初步信息后拜访客户,针对客户认为有问题的MCU芯片做针对性试验。通过STM32CubMx生成测试工程,分别使用LSI(40K),LSE(32.768K),RTC工作时每秒通过LED1(PB5)取反一次(通过LED1灯是否闪烁来指示RTC是否工作正常),
[单片机]
STM32的RTC晶振不起振的可能原因?
最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概6片,幸运的是并未遇到晶振不起振的现象。而我采用的是3毛钱一个的普通晶振,并未选用传说中低负载高精度晶振。。。后来在另外一片实验性质的板子上首次遇到了晶振不起振的问题,而且做了2片都不起振,这才让我意识到这个问题的严重性。 从上述现象来看,我认为对RTC晶振起振影响最大的因素应该是PCB的布线。但是遇到问题时通常是PCB已做好,甚至已经做了几百块,没有回头路了。于是大家更关注的问题似乎就是“如何补救”了。在网上搜索一下,你就会发现世界是如此美好!每个人的经验和建议都不一样,甚至是完全相反的!这种现象告诉我们,除了PCB布线,对晶振起振影响最大的似乎不是电气参数,而
[单片机]
STM32F4 新建标准库函数工程
前言 在 STM32 开发中,库函数开发相比寄存器方式具有开发周期短、代码可读性好、便于移植等优点,而使用 Keil 环境的第一步就是新建工程。本文以 STM32F401CE 芯片为例,介绍使用标准库函数新建工程的步骤。 材料准备 STM32F4xx 固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0.rar Keil-MDK 一点耐心 新建库函数工程注意事项 不同芯片在新建工程时的配置略有区别,主要体现在以下几点: 工程目标 Device 选择的芯片型号不同。 添加的启动文件不同。要根据芯片型号在 arm 目录下选择相应的 .s 文件。 C/C++ 选项卡的芯片型号宏定义不同。具体有哪些选
[单片机]