【STM32】基础知识 第十一课 时钟

news2024/9/28 13:19:57

【STM32】基础知识 第十一课 时钟

  • 概述
  • 时钟系统的基本概念
    • 什么是时钟
    • 时钟树
    • 锁相环
    • APB
  • 时钟树
    • F1 系列时钟树
    • F4 系列时钟树
    • F7 系列时钟树
    • H7 系列时钟树
  • 系统时钟配置
    • 系统时钟配置步骤
    • 外设时钟的使能和使能
    • HAL_RCC_OscConfig() 函数
    • HAL_RCC_ClockConfig() 函数

概述

STM32 微控制器具有复杂的时钟系统, 用于为处理器内核, 外设和总线提供时钟信号. 了解 STM32 的时钟系统对于掌握其工作原理和进行高效开发至关重要.

STM32 时钟

时钟系统的基本概念

什么是时钟

时钟 (Clock) 提供了一个周期性的脉冲信号, 具有明确的高电平和低电平. 最常用的时钟是占空比 50% 的方形波. 时钟的单片机的脉搏, 搞懂时钟走向及关系, 对单片机的使用至关重要.

STM32 时钟

时钟树

STM32 的时钟系统以一种树状结构连接各个时钟源, 时钟分配和外设. 时钟树负责将所选的时钟源信号分配给处理器内核, 外设和总线. 根据不同的应用需求, 可通过时钟树配置不同的时钟频率和时钟源.

锁相环

锁相环 (Page-Locked Loop): PLL 是一种用于产生高频时钟信号的电子电路. 在 STM32 中, PLL 可以将内部或外部时钟源的频率倍增, 从而产生更高频率的时钟信号. PLL 的倍频系数和分频系数是可配置的, 使得开发者可以根据需求生成不同频率的时钟信号.

APB

APB (Advanced Peripheral Bus): STM32 微控制器通常有两个 APB 总线, 即 APB1 和 APB2. APB1 和 APB2 的时钟频率可以通过时钟树进行独立配置.

时钟树

STM32 时钟树

F1 系列时钟树

时钟源名称频率材料用途
高速外部振荡器 (HSE)4-16 MHz晶体/陶瓷SYSCLK/RTC
低速外部振荡器 (LSE)32.768 KHz晶体/陶瓷RTC
高速内部振荡器 (HSI)8 MHzRCSYSCLK
低速内部振荡器 (LSI)40 KHzRCRTC/IWDG
符号作用
时钟安全系统 (CSS)如果 HSE 启动失败, 切换到 HSI, 可进 NMI 中断
自由运行时钟 (FCLK)用于采样中断和调试模块计时, 休眠仍有效

F4 系列时钟树

时钟源名称频率材料用途
高速外部振荡器 (HSE)4-26 MHz晶体/陶瓷SYSCLK/RTC
低速外部振荡器 (LSE)32.768 KHz晶体/陶瓷RTC
高速内部振荡器 (HSI)16 MHzRCSYSCLK
低速内部振荡器 (LSI)32 KHzRCRTC/IWDG

F7 系列时钟树

时钟源名称频率材料用途
高速外部振荡器 (HSE)4-26 MHz晶体/陶瓷SYSCLK/RTC
低速外部振荡器 (LSE)32.768 KHz晶体/陶瓷RTC
高速内部振荡器 (HSI)16 MHzRCSYSCLK
低速内部振荡器 (LSI)32 KHzRCRTC/IWDG

H7 系列时钟树

时钟源名称频率材料用途
高速外部振荡器 (HSE)4-48 MHz晶振/陶瓷SYSCLK/RTC
低速外部晶振 (LSE)32.768 KHz晶体/陶瓷IWDG/RTC/AWU
高速内部振荡器 (HSI)64 MHzRCSYSCLK
低速内部振荡器 (LSI)32 KHzRCIWDG/RTC/SWU
高速内部振荡器 (HSI48)48 MHzRCUSB
低功耗内部振荡器 (CSI)4 MHzRCSYSCLK (低功耗)
辅助型时钟系统作用
时钟安全系统 (CSS)如果 HSE 启动失败, 切换到 HSI, 可进 NMI 中断
特殊时钟恢复系统 (CRS)可以实现自动调整振荡频率, 确保高精度时钟

系统时钟配置

系统时钟配置步骤

  1. 配置 HSE_Value: 告诉 HAL 库外部晶振频率, stm32xxxx_hal_conf.h
  2. 调用 SystemInit() 函数 (可选): 在启动文案中调用, 在 system_stm32xxxx.c 定义
  3. 选择时钟源, 配置 PLL: 通过 HAL_RCC_OscConfig() 函数设置
  4. 选择系统时钟源, 配置总线分频器: 通过 HAL_RCC_ClockConfig() 函数设置
  5. 配置扩展外设时钟 (可选): 通过 HAL_RCCEx_PeriphCLKConfig() 函数设置

外设时钟的使能和使能

当我们要使用某个外设时, 必须先使能该外设时钟.

HAL 库使能外设时钟的方法:

// 使能 GPIOA 时钟
__HAL_RCC_GPIOA_CLK_ENABLE();

HAL 库失能外设时钟的方法:

// 禁止 GPIOA 时钟
__HAL_RCC_GPIOA_CLK_DISABLE();

HAL_RCC_OscConfig() 函数

格式:

typdef struct
{	
	uint32_t Oscillator Type;  // 选择需要配置的振荡器
	uint32_t HSEState;  // HSE 状态
	uint32_t HSEPredivValue;  // HSE 预分频值
	uint32_t LSEState; // LSE 状态
	uint32_t HSIState;  // HSI 状态
	uint32_t HSICalibrationValue;  // HIS 校准值
	uint32_t LSIState;  // LSI 状态
	RCC_PLLInitTypeDef PLL;  // PLL 结构体
}RCC_OscInitTypeDef;

typedef struct
{
	uint32_t PLLState;  // PLL 状态
	uint32_t PLLSource;  // PLL 时钟源
	uint32_t PLLMUL;  // PLL 倍频系数
}RCC_PLLInitTypeDef;

例子:

HAL_StatusTypeDef Hal_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)

HAL_RCC_ClockConfig() 函数

格式:

typedef struct
{
	uint32_t ClockType;  // 要配置的时钟 (SYSCLK/HCLK/PCLK1/PCLK2)
	uint32_t SYSCLKSource;  // 系统时钟源
	uint32_t AHBCLKDivider; // AHB 时钟预分频系数
	uint32_t APB1CLKDivider;  // SPB1 时钟预分频系数
	uint32_t APB2CLKDivider;  // APB2 时钟预分频系数
}RCC_ClkInitTypeDef;

例子:

HAL_ClkInitTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency)

设置 Flash:

uint32_t Flatency

#define FLASH_LATENCY_0 0x0000 0000U  // FLASH 0 个等待周期
#define FLASH_LATENCY_1 FLASH_ACR_LATENCY_0  // FALSH 1 个等待周期
#define FLASH_LATENCY2 FLASH_ACR_LATENCY_1  // FLASH 2 个等待周期

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

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

相关文章

超级香,分享8个相见恨晚的Python库

看到新奇又实用的第三方库,当然要分享出来咯~ Plottable Plottable是一个Python库,用于在matplotlib基础上绘制精美表格。例如下图所示表格。 代码如下: import matplotlib.pyplot as plt import numpy as np import pandas as pd from ma…

Leangoo领歌轻量级协作-OKR目标管理

​本场景是OKR目标管理模板,用Leangoo管理和跟踪OKR可以提升OKR的透明度和传递的即时性,驱动团队的积极性、促进共享和协作、提升沟通和协作的效率,帮助企业快速落地OKR。 OKR(Objectives and Key Results目标与关键结果&#xf…

Packet Tracer - 谁会听到广播?

Packet Tracer - 谁会听到广播? 目标 第 1 部分:观察 VLAN 实施中的广播流量 第 2 部分:完成思考题 拓扑图 场景 在本练习中,将完全填充一个配有 24 个端口的 Catalyst 2960 交换机。 所有端口都已使用。 您将观察 VLAN 实施…

PS磨皮插件portraiture最新版磨皮工具

Portraiture是一款智能磨皮插件,为Photoshop和Lightroom添加一键磨皮美化功能,快速对照片中皮肤、头发、眉毛等部位进行美化,无需手动调整,大大提高P图效率。全新4版本,升级AI算法,并独家支持多人及全身模式…

剪纸中秋海报

打开【Ps】,新建【A4画布】,双击背景图层【解锁】,再添加【图案叠加】图层样式,选择最后一个图案,增加【缩放】。 【椭圆选框工具】按住【Shift】键画一个正圆,填充颜色#0e8993,添加【渐变叠加】…

假期做了一项调研:大厂为何都要自研RPC框架?结果合乎情理

大家好,我是冰河~~ 五一假期过的可真快,今天开始,又要搬砖了。在五一假期当中,冰河做了一项调研,感觉结果还是挺合乎情理的。 翻看招聘信息 先来看我在某招聘网站上随便搜索了下Java招聘的岗位,看到的招…

做好防雷检测的重要意义和作用

防雷检测是一项非常重要的工作,它可以保障人们的生命财产安全,并维护国家的安全稳定。地凯科技将从防雷的重要性、防雷检测的行业应用和防雷行业国标三个方面来阐述防雷检测的重要性。 一、防雷的重要性 随着科技的不断发展,人们的生活和工作…

unity中实现经典的2d横版单向跳跃平台

经常玩2d横版游戏的朋友们相信对这样的效果一定对这种单向跳跃平台很熟悉:我希望我的角色可以通过跳跃跳上平台,然后在平台之上按下键盘的下键后从平台上落下。 那么想要实现这样的效果具体要怎么做呢?我们还是先将想要实现的效果进行一个逻…

微服务分布式搜索引擎 ElasticSearch 搜索结果处理 排序、分页与高亮

文章目录 ⛄引言一、排序⛅普通字段排序⚡地理坐标排序 二、分页⌚基本分页⏰深度分页 三、高亮⚡实现高亮 ⛵小结 ⛄引言 本文参考黑马 分布式Elastic search Elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中…

python 实现模糊聚类

python模糊聚类细节与实现 前言数学逻辑代码框架Python实现数据预处理 preProcess获得相似矩阵 getSimilarityMatrix获取传递闭包 transitiveClosure模糊运算 fuzzMatrixProduct实现聚类 mergeProcess 实例演示 ![在这里插入图片描述](https://img-blog.csdnimg.cn/b062c59c282…

【Redis】持久化机制详解:从RDB到AOF,你需要知道的一切

本文目录 RDB(默认) 自动触发 🆚 手动触发 优点 缺点 何时会触发RDB快照 AOF 启用 AOF 配置路径 AOF 文件📃 AOF 的写回策略 AOF 的重写机制 优点 缺点 RDB & AOF 优先级 终极方案:RDB AOF 混合方…

城市轨道交通自动售检票系统

概述 城市轨道交通自动售检票系统(AFC)是基于计算机、通信、网络、自动控制等技术,实现轨道交通售票、检票、计费、收费、统计、清分、管理等全过程的自动化系统。可以提高轨道交通的运营效率,满足乘客的快速出行需求&#xff0c…

看完张一鸣近十年微博,我总结了这些成长特质

从程序员到 CEO 关注我的朋友,很多都是技术背景,之前在一个知乎回答里提到过,技术人在创业过程中并不占优势。 编程和创业是两个不同的体系,大部分技术工程师在工作中,解决的往往是一个限定的问题,而创业是…

【分享】ChatGPT的key,用key免费使用ChatGPT(每天更新)

1、ChatGPT用法总结: 自动化文本生成:可以用GPT生成文章、新闻、文本摘要,甚至小说、诗歌等文学作品。语音生成:结合语音合成技术,GPT可以生成自然流畅的语音,可以用于语音助手、交互式语音应用等。问答系统…

MobileViT神经网络模型

官方源码(Pytorch实现) : https://github.com/apple/ml-cvnets 原文链接:https://blog.csdn.net/qq_37541097/article/details/126715733 霹雳吧啦Wz从ml-evnets仓库中剥离的代码: deep-learning-for-image-processing/pytorch_classification/MobileViT at master…

AWE 2023:科技与艺术的结晶 三星展台亮点回顾

2023年4月27~30日,AWE 2023中国家电及消费电子博览会在上海新国际博览中心盛大举行。 作为全球三大消费电子展之一,每一年的AWE都汇聚了全球家电及消费电子领域最前沿、最尖端的科技和产品,因而向来都被业界人士视为整个行业的风向标。本届AW…

【读书笔记】《深入浅出数据分析》

我最大的收获 试想你在经历一场英语考试,还有两分钟就要交卷了,而你还没有开始写作文。此时,你会怎么做? 利用2分钟时间写出的第一段,还是只写关键句子,搭出文章的开头、过程、结尾? 后者更加明…

【LeetCode】91. 解码方法

91. 解码方法(中等) 思路 这其实是一道字符串类的动态规划题,不难发现对于字符串s的某个位置i而言,我们只关心「位置 i 自己能否形成独立 item」和「位置 i 能够与上一位置(i-1)能否形成item 」&#xff0c…

无人机测试二维码降落。

一、首先要做的就是让NX板卡驱动usb摄像头: 1. 下载usb_cam软件包 sudo apt install ros-melodic-usb-cam2. 启动相机节点: A. 查找摄像头接口 ls /dev/video*B. 在该路径下修改launch文件,换成你自己的摄像头接口 我这里的摄像头接口为…

PySpark基础入门(3):RDD持久化

RDD的持久化 RDD 的数据是过程数据,因此需要持久化存储; RDD之间进行相互迭代的计算,新的RDD的生成代表着旧的RDD的消失;这样的特性可以最大化地利用资源,老旧地RDD可以及时地从内存中清理,从而给后续地计…