STM32时钟系统和时钟树

news2025/6/17 7:37:54

目录

STM32时钟系统

认识时钟树

什么是时钟

认识时钟树(F407)

配置系统时钟

系统时钟配置步骤

外设时钟使能和失能

sys_stm32_clock_init函数(F4)

 时钟配置一般步骤

System文件夹_时钟系统工作原理

System文件夹介绍

Sys文件介绍

Delay文件介绍

Systic工作原理

Syctic寄存器介绍

Usart文件介绍

printf()函数输出流程

printf的使用

printf函数支持


STM32时钟系统

认识时钟树

什么是时钟

简单来说,时钟是具有周期性的脉冲信号,最常用的是占空比为50%的方波

认识时钟树(F407)

F4时钟树--正点原子

图中为一个简化的STM32F4时钟系统。A部分表示输入时钟源,可分为外部时钟源和内部时钟源;B为锁相环“PLL”;C为我们重点需要关注的系统时钟源选择器,此项决定了MCU的系统主时钟“SYSCLK”的大小;AHB预分频器将SYSCLK分频或不分频后分发给其它外设进行处理,包括到D部分的Cortex-M内核系统的时钟和使能单元。E为定时器以及其它外设的时钟源APB1/APB2。

HSE和HSI经过/M分频之后传递锁相环,锁相环会使晶振走过*N倍频器,之后如果再走过/P分频则可以直接作为系统时钟SYSCLC,如果走过/Q分频则可以作为其他外设的时钟。

系统时钟之后会去到AHB总线的时钟

AHB时钟经过总线桥会去到APB1和APB2(这俩实际上是由AHB1桥接过来的)

LSI可以为IWDG和RTC提供时钟

LSE专门为RTC提供时钟

说白了STM32时钟源就外部高速、外部低速、内部高速、内部低速四个时钟源,另外还有3个PLL锁相环

外设的时钟源大都是由这四个时钟源经过选择器和倍频等操作得到的

STM32F4时钟树简图

配置系统时钟

系统时钟配置步骤

外设时钟使能和失能

要使用某个外设,必须先使能该外设的时钟

sys_stm32_clock_init函数(F4)

HAL_RCC_OscConfig()函数

HAL_RCC_ClockConfig()函数

 

/P输出 8M/8*336/2=168        /Q输出 8M/8*336/7=48 

//RCC_OscInitTypeDef rcc_clk_init

/* 选中PLL作为系统时钟源并且配置HCLK,PCLK1和PCLK2*/
/* 选择要配置的时钟为 SYSCLK、HCLK、PCLK1、PCLK2  系统时钟、AHB总线时钟、APB1、APB2总线时钟 */
    rcc_clk_init.ClockType = ( RCC_CLOCKTYPE_SYSCLK \
                                    | RCC_CLOCKTYPE_HCLK \
                                    | RCC_CLOCKTYPE_PCLK1 \
                                    | RCC_CLOCKTYPE_PCLK2);
     /* 设置系统时钟时钟源为PLL 根据时钟树简图系统时钟可供选择的时钟源还有HSE和HSI*/
    rcc_clk_init.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;      
    rcc_clk_init.AHBCLKDivider = RCC_SYSCLK_DIV1;                   /* AHB分频系数为1 */
    rcc_clk_init.APB1CLKDivider = RCC_HCLK_DIV4;                    /* APB1分频系数为4 */
    rcc_clk_init.APB2CLKDivider = RCC_HCLK_DIV2;                    /* APB2分频系数为2 */
  /* 同时设置FLASH延时周期为5WS,也就是6个CPU周期 根据手册上FLASH读接口的FLASH等待周期表得到 */
    ret = HAL_RCC_ClockConfig(&rcc_clk_init, FLASH_LATENCY_5);     
   

 时钟配置一般步骤

  • 使能PWR时钟:调用函数 _HAL_RCC_PWR_CLK_ENABLE()。
  • 设置调压器输出电压级别:调用函数 _HAL_PWR_VOLTAGESCALING_CONFIG()。
  • 选择是否开启Over-Driver功能:调用函数HAL_PWREx_EnableOverDrive()。
  • 配置时钟源相关参数:调用函数HAL_RCC_OscConfig()。
  • 配置系统时钟源以及AHB,APB1和APB2的分频系数:调用函数HAL_RCC_ClockConfig()。

PWR时钟名是“Power Control时钟”。Power Control模块负责管理微控制器的电源管理功能,包括进入低功耗模式、唤醒控制、备份寄存器等。通过配置和控制PWR时钟,可以有效地管理STM32微控制器的电源消耗

  • STM32有4个时钟源:HSI、HSE、LSI、LSE和3个PLL

  • HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。

  • HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~26MHz。

  • LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。

  • LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC

  • PLL为锁相环倍频输出。 STM32F4有三个PLL:

  • 主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。

①第一个输出PLLP用于生成高速的系统时钟(最高180MHz)

②第二个输出PLLQ为48M时钟,用于USB OTG FS时钟,随机数发生器的时钟和SDIO时钟。

  • 第一个专用PLL(PLLI2S)生成精确时钟,在I2S和SAI1上实现高品质音频

    N是用于PLLI2S vco的倍频系数,其取值范围是:192~432;

    R是I2S时钟的分频系数,其取值范围是:2~7;

    Q是SAI时钟分频系数,其取值范围是:2~15;P没用到。

  • 第二个专用PLL(PLLSAI)同样用于生成精确时钟,用于SAI1输入时钟,同时还为LCD_TFT接口提供精确时钟。

    N是用于PLLSAI vco的倍频系数,其取值范围是:192~432;

    Q是SAI时钟分频系数,其取值范围是:2~15;

    R是LTDC时钟的分频系数,其取值范围是:2~7;P没用到。

  • PLLCLK=HSE*N/(M * P),可以通过改变N、M、P改变PLLCLK的频率

  • 系统时钟SYSCLK可来源于三个时钟源:

​ ①、HSI振荡器时钟

​ ②、HSE振荡器时钟

​ ③、PLL时钟

  • 任何外设在使用之前,必须使能相应的时钟

  • STM32F4时钟信号输出MCO1(PA8)和MCO2(PC9),MCO1:用户可以配置预分频器(1~ 5)向MCO1引脚PA8输出4个不同的时钟源:HIS、LSE、HSE、PLL。MCO2:用户可以配置预分频器(1~ 5)向MCO2引脚PC9输出4个不同的时钟源:HSE、PLL、SYSCLK、PLLI2S 。MCO最大输出时钟不超过100MHz。

  • RCC时钟控制相关寄存器定义在stm32f429xx.h中。结构体: RCC_TypeDef;RCC时钟相关定义和函数在文件stm32f4xx_hal_rcc.h、stm32f4xx_hal_rcc.c 。

System文件夹_时钟系统工作原理

System文件夹介绍

 正点原子提供的System文件夹包含常用的函数和驱动

Sys文件介绍

Delay文件介绍

Systic工作原理

Systic即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器

F1/F4/F7的Systic定时器的时钟来源于HCLK,也就是AHB总线上的时钟

H7的Systic定时器的时钟来源于SYS_d1cpre_ck(H7),也就是系统的d1分频器

Syctic寄存器介绍

Systic重装载数值寄存器(Load)  和  Systic当前数值寄存器(Val)

Systic控制及状态寄存器(CTRL)

由于滴答定时器是处于芯片内核中的,ST公司使用之后将CLKSOURCE位固定了,因此并不是起到选择时钟源的作用,而是被ST公司设置后起到分频的作用

TICKINT其实就是起到一个倒数计时完成后触不触发中断的作用

Usart文件介绍

printf()函数输出流程

printf的使用

printf函数支持

半主机模式 :用于ARM目标的一种机制,可以将来自应用程序代码的输入输出请求传递至运行调试器的主机

简单说,就是通过仿真器实现开发板在电脑上的输入和输出

一般不使用半主机模式,而是使用串口模式

要提供printf()函数支持,首先要避免半主机模式

可使用微库法

和代码法

如果要使用串口,就需要根据串口这个硬件重新实现fputc(int ch,FILE *f)这个函数

当串口的状态寄存器USART_UX->SR的0x40位,也就是第6位==0,代表上一个字符还没有发送完成,就循环等待。上一个字符发送完成后,将字符写入串口的数据寄存器USART_UX->SR。

如果不等待fputc上一个字符发送完成就往usart->DR写下一个字符会导致乱码

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

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

相关文章

Ps 滤镜:干画笔

Ps菜单:滤镜/滤镜库/艺术效果/干画笔 Filter Gallery/Artistic/Dry Brush 干画笔 Dry Brush滤镜用于模拟使用干画笔技术(介于油彩和水彩之间)绘制的效果。此滤镜特别适用于为图像添加粗糙而富有表现力的笔触效果,同时减少细节&…

计算机发展史故事【17】

任天堂崛起 七十年代美国雅达利公司开创一个高科技的电脑游戏业。无独有偶,一家专营电脑游戏机的日本任天堂公司,自八十年代初期把它的家庭电脑游戏机(FC)投放市场后,不平静的世界被再一次激起轩然大波。这个小小的日本…

测缝计测量的是实际缝宽吗?

在土木工程中,测缝计作为一种重要的监测工具,广泛应用于桥梁、隧道、大坝等大型结构中,用以测量和监控结构接缝或裂缝的实际宽度变化。然而,有些人可能会产生疑问:测缝计测量的是实际缝宽吗?本文将对这一问题进行深入…

Linux基础之进程的优先级

目录 一、进程优先级的概念 二、进程优先级的查看 三、怎么修改进程优先级 四、进程饥饿 一、进程优先级的概念 cpu资源分配的先后顺序,就是指进程的优先权(priority)。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linu…

5W 3KVAC隔离 宽电压输入 AC/DC 电源模块——TP05AL系列

TP05AL系列产品是一款经济型开板式开关电源,输出功率为5W,具有可靠性高、小体积、性价比高等特点,广泛用于工控和电力仪器、仪表、智能家居等相关行业。

云计算第十九课

目录操作 查找文件 locate ocate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库 索引构建过程需要遍历整个根文件系统,很消耗资源 locate和updatedb命…

数据分析实例——搭建电商的指标体系||对应功能开发需要接入的电商API接口说明

前言: 在日常工作中,数据分析中常常涉及搭建指标体系,搭建电商需要接入的电商API接口本文主要以电商为案例,来讲讲如何搭建指标体系。 指标体系的定义: 指标体系是由一系列指标组成的,这些指标是基于不同的…

openGauss一主两备集群异常断电后不能正常启动的解决过程简记

背景 因异常断电后opengauss 5.0.0版本,一主两备集群启动失败。 报错不是主机,由于当时没有截图,查看日志后发现报错是: 定位过程 Day1 1. 尝试用另外两台机器启动每台机器 发现都报错自己不是主机,像极了唐僧被妖…

天锐绿盾 | 设计院、机械制造行业透明加密cad图纸、图纸防泄密软件

天锐绿盾为设计院及机械制造行业量身打造的透明加密CAD图纸解决方案,专注于保障这些行业中的核心资产—设计图纸的安全。通过集成先进的加密技术和访问控制策略,该软件系统能有效防止图纸的未经授权访问和意外泄密。 PC地址: https://isite…

把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值,字符串中包含的字符可以是0-9,A-F,a-f

方法一: 1-十六进制是一种基数为16的计数系统,是一种逢16进1的进位制。例如十六进制0x57,写成十进制是 5*16^17*16^087。第一位乘16的0次方,第二位乘16的1一次方。 2-如果0x57按顺序来转化,不太好转,因为…

PHP xdebug

使用场景 一台MAC上安装了phpstorm,虚拟机安装了对应的web程序,需要调试。 坑点,网上教程太多,不如看官网,需要按照xdebug版本来配置php.ini https://www.jetbrains.com/help/phpstorm/2023.3/configuring-xdebug.htm…

如何系统地有效学习Power Query?

系统地有效学习Power Query,可以遵循以下步骤: 首先,了解Power Query在数据处理和分析中的作用,它如何帮助你简化数据整理工作,将重复数据操作自动化,并与Excel、Power BI等工具有非常高的集成。 1. 官方…

JavaScript对象设计哲学:八种模式塑造高效代码

🔥 个人主页:空白诗 文章目录 一、引言 🚀二、Object 构造函数 🧱📌 基本用法📌 重要性📌 实际应用案例 三、对象字面量 📘📌 定义属性📌 定义方法&#x1f4…

基于Spring封装一个websocket工具类使用事件发布进行解耦和管理

最近工作中,需要将原先的Http请求换成WebSocket,故此需要使用到WebSocket与前端交互。故此这边需要研究一下WebSocket到底有何优点和不可替代性: WebSocket优点: WebSocket 协议提供了一种在客户端和服务器之间进行全双工通信的…

制氧机负离子的作用与好处深度解析

随着现代生活节奏的加快,空气质量逐渐下降,人们对健康生活的追求也日益增强。在这样的背景下,制氧机负离子功能因其多重健康效益而备受关注。本文将深入探讨制氧机负离子的作用与功效,帮助大家更好地了解并应用这一健康科技。 我们…

Win11环境下,AirSim和UE4安装

这里主要描述一下我前段时间成功安装AirSim和UE4的流程,中间也遇到过一些问题,刚开始我安装的是最新的UE5,但是不知道什么情况运行AirSim中的blocks模块始终没有成功,VisualStudio中提示Unable to find plugin PhysXVehicles &…

回收站删除的文件怎么恢复?6个恢复技巧记得收藏!

“回收站删除的文件还有机会恢复吗?应该怎么操作才能恢复回收站里删除的文件呀?本人纯小白,希望大家推荐几个简单易懂的恢复方法。” 在使用电脑的过程中,我们时常会不小心将重要文件误删到回收站,甚至直接从回收站中彻…

AI预测体彩排3采取878定位大底=23策略+杀断组+杀组选+杀和尾+杀和值012缩水测试5月16日预测第2弹

昨天的87823大底测试第一次测试,已经成功命中! 今天继续测试,仍旧目标为:10期中至少5中期。好了,废话不多说了,直接上结果吧~ 首先,878定位如下: 百位:4,5,6,3,8,1,9,0…

控制台的高度可调有哪些重要意义解析

在现代办公环境中,控制台的高度可调性越来越受到重视。它不仅为员工提供了更加舒适的工作环境,还提高了工作效率和生产力。本文将详细探讨控制台高度可调的重要性,并解析其在实际应用中的优势。 个性化适应需求 对于长时间在控制台前工作的用…

Kubernetes入门:应用部署方式的演变

Kubernetes:管理云平台中 多主机的 容器化应用的平台。 应用部署方式的演变 传统部署 互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:无法为物理服务器中的应用程序定义资源边…