STM32时钟系统和时钟树

目录

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.hqwc.cn/news/706068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SQL】SQL常见面试题总结(1)

目录 1、检索数据1.1、从 Customers 表中检索所有的 ID1.2、检索并列出已订购产品的清单1.2、检索所有列 2、排序检索数据2.1、检索顾客名称并且排序2.2、对顾客 ID 和日期排序2.3、按照数量和价格排序2.4、检查 SQL 语句 3、过滤数据3.1、返回固定价格的产品3.2、返回产品并且…

面试题库-项目

1.项目主要实现了哪些功能? 本项目是专门为校园食堂窗口定制的一款软件产品,包括系统管理后台和客户端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对餐厅的菜品、套餐、订单、员工等进行管理维护。客户端主要提供给学生及校职…

【简单介绍下在Ubuntu中如何设置中文输入法】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

STM32手写寄存器的方式实现点亮LED灯

这次是从头开始学习STM32,看野火的视频开始学习,感觉需要记录的时候就要记录一下学习的心得。野火视频学习的老师讲的还是很到位的,能够学习到很多的细节之处,有时会感觉很啰嗦,但是不得不说确实很详细,只有…

python批量生成防伪识别二维码

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 二维码(QR Code)是一种矩阵条码技术,它使用黑白矩形图案来表示二进制数据,这些矩形图案可以被设备扫描并解读。二维码可以被用来存储

macOS Ventura 13如何设置定时重启(命令行)

文章目录 macOS Ventura 13如何设置定时重启(命令行)前言具体设置步骤及命令解释其他 macOS Ventura 13如何设置定时重启(命令行) 前言 由于升级 macOS 13 Ventura 之后,之前在节能里面通过鼠标点击设置开机关机的方法不能用了,现在只能用命令设置开机…

设计模式:外观模式(Facade)

设计模式:外观模式(Facade) 设计模式:外观模式(Facade)模式动机模式定义模式结构时序图模式实现在单线程环境下的测试在多线程环境下的测试模式分析优缺点适用场景应用场景模式扩展参考 设计模式&#xff1…

英伟达发布 VILA 视觉语言模型,实现多图像推理、增强型上下文学习,性能超越 LLaVA-1.5

前言 近年来,大型语言模型 (LLM) 的发展取得了显著的成果,并逐渐应用于多模态领域,例如视觉语言模型 (VLM)。VLM 旨在将 LLM 的强大能力扩展到视觉领域,使其能够理解和处理图像和文本信息,并完成诸如视觉问答、图像描…

001_PyQt简介

本系列面向零基础小白,从零开始到Pyqt 进行项目实战。 什么叫从零开始?从软件安装、环境配置开始。 不跳过一个细节,不漏掉一行代码,不省略一个例图。 PyQt作为一个强大的工具包,成功地将脚本语言python和QT库融合到…

Java | Leetcode Java题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution {public int numDecodings(String s) {int n s.length();// a f[i-2], b f[i-1], cf[i]int a 0, b 1, c 0;for (int i 1; i < n; i) {c 0;if (s.charAt(i - 1) ! 0) {c b;}if (i > 1 && s.charAt(i …

【PB案例学习笔记】-03用户名密码校验

写在前面 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git 需要源代码的小伙伴们可以自行…

海上定位测量难?千寻星基稳如“定”海神针_0416(update-2)

海上定位测量难&#xff1f;千寻星基稳如“定”海神针 近年来&#xff0c;随着海洋资源的开发和利用&#xff0c;海上定位测量的需求日益增加&#xff0c;它通过测量物体的位置和方向来确定海洋中的各项活动。其准确性和可靠性对于确保海上作业的安全和效率至关重要。 由于海…