STM32学习笔记(六) —— 配置系统时钟

1.时钟树

时钟树1

从图中可以看出一共有四个时钟来源,分别是内部高速时钟、内部低速时钟、外部高速时钟接口、外部低速时钟接口,这些时钟源经过内部的倍频分频后提供给各外设使用。其中HSE与LSE需要由外部提供,可以是外部时钟直接输入,也可以是无源晶振,一般HSE需要在4-16MHz之间,LSE只能是32.768KHz。还可以将PLLCLK、HSI、HSE、SYSCLK时钟通过单片机相关引脚输出。

2.配置系统时钟

系统时钟

系统时钟最大72MHz,有三种不同的时钟源:
HSI时钟,此时系统时钟只能是8MHz
HSE时钟,此时系统时钟只能是4-16MHz
PLL时钟,可以由HSI或者HSE倍频得到

PLL时钟有两种不同的来源:
HSI时种,进行二分频后提供给PLL
HSE时钟,直接或者经过二分频后提供给PLL

一般情况下,我们经常使用HSE作为时钟源通过倍频作为PLL时钟,再选用PLL时钟作为系统时钟。我们开发板上使用的晶振是8MHz(HSE),可以将8MHz作为PLL时钟源,通过9倍频后作为系统时钟,这样正好是72MHz(8MHz x 9)。AHB时钟与APBx时钟可以通过系统时钟分频得到,AHB与APB2时钟最大是72MHz,我们这里进行1分频(就是不分频),APB1时钟最大36MHz,我们这里进行2分频就可以。

我们在使用STM32CubeMX建立HAL库工程模板的时候是配置过系统时钟的。

系统时钟配置

在生成的代码中,SystemClock_Config函数就是配置系统时钟函数

SystemClock_Config

void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the RCC Oscillators according to the specified parameters* in the RCC_OscInitTypeDef structure.*//* 使用HSE时钟 */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;/* 开启HSE时钟 */RCC_OscInitStruct.HSEState = RCC_HSE_ON;/* HSE时钟不分频 */RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;/* 开启HSI时钟 */RCC_OscInitStruct.HSIState = RCC_HSI_ON;/* 开启PLL */RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;/* 将HSE时钟作为PLL时钟源 */RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;/* 进行9倍频 */RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;/* 对时钟进行初始化 */if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks*//* 配置SYSCLK、HCLK、PCLK1、PCLK2 */RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;/* 系统时钟源使用PLL时钟, PLL时钟前面已经配置成了72MHz, 所以系统时钟也是72MHz */RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;/* AHB时钟由系统时钟1分频提供, 就是72MHz */RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;/* APB1时钟由AHB时钟2分频提供, 就是36MHz */RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;/* APB2时钟由AHB时钟1分频提供, 就是72MHz */RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;/* 对时钟进行初始化 */if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK){Error_Handler();}
}

我们还可以调用HAL_RCC_MCOConfig函数将PLLCLK的二分频、HSI、HSE、SYSCLK时钟通过相关的引脚输出。通过查阅数据手册可以知道PA8引脚可以作为时钟输出引脚

在这里插入图片描述
在这里插入图片描述

在STM32CubeMX中使能时钟输出

在这里插入图片描述

在时钟配置界面(Clock Configuration)可以选择输出哪一路时钟,这里要注意,I/O口的最高速率是50MHz,所以输出的时钟频率是不能超过50MHz的。这里我们选择将HSE时钟输出到PA8引脚

在这里插入图片描述

生成代码后,发现在系统时钟配置函数中调用了时钟输出函数HAL_RCC_MCOConfig

在这里插入图片描述

将程序下载后,可以用示波器测量PA8引脚,查看是否有8MHz的时钟输出

本例程代码可以在HAL库工程模板这一章节的最后,百度网盘链接分享处获取

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

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

相关文章

防御保护---防火墙双机热备直路部署(上下三层接口)

防御保护---防火墙双机热备直路部署(上下三层接口) 一、根据网段划分配置IP地址和安全区域二、配置动态路由OSPF三、配置双机热备四、测试:4.1 测试一:查看状态和路由器路由表(双机热备)前后对比4.2 测试二…

「数据结构」3.ArrayList

🎇个人主页:Ice_Sugar_7 🎇所属专栏:Java数据结构 🎇**欢迎点赞收藏加关注哦!* ArrayList 🍉ArrayList的构造🍉add方法🍌扩容机制🍌重要结论 🍉其…

网络协议与攻击模拟_13缓存DNS与DNS报文

一、缓存DNS服务器 1、引入缓存DNS 缓存域名服务器需要与外网连接 一台windows作为Client 一台Windows server作为缓存DNS 桥接网络 DHCP自动获取IP地址 Client 192.168.183.133 Windows server 192.168.183.138 ipconfig /all查看下Client的DNS,设置让Cl…

Unity | 渡鸦避难所-9 | 角色名字及血条等信息

1 效果预览 游戏中角色的名字和血条是非常重要的元素,它们可以帮助玩家了解角色的身份和状态。在 Unity 中,可以使用 UGUI 来实现这些功能 2 实现方案 1 画布 (Canvas) 画布 (Canvas) 组件表示进行 UI 布局和渲染的抽象空间。所有 UI 元素都必须是附加…

【异常处理】word或ppt打开后没反应或闪退,或者报错由安全模式打开

折腾了2个小时,可算解决了,办法是在【控制面板】中右击,选择【更改】 选择联机修复,然后耐心等待,最后再打开就没问题了。

DevOps落地笔记-08|技术债务:勤借勤还,再借不难

上一讲主要介绍了如何有效管理第三方组件的实际案例,目的是让你意识到依赖组件的质量也会影响到软件的质量。前面几个课时谈论的主要内容都是跟软件质量相关,通过各种方式方法提高软件交付的质量。这时就会遇到一个问题,软件质量固然重要&…

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)

2024年第4届IEEE软件工程与人工智能国际会议(SEAI 2024)将于2024年6月21-23日在中国厦门举办。 SEAI旨在为软件工程与人工智能领域搭建高端前沿的交流平台,推动产业发展。本次会议将汇聚海内外的知名专家、学者和产业界优秀人才,共同围绕国际热点话题、核…

PostGIS空间数据库之空间数据融合实践

目录 前言 一、ST_Union()简介 1、方法说明 2、参数介绍 二、ST_Collect()简介 1、方法说明 2、参数介绍 3、两者区别 三、实际案例实践 1、不重叠融合 2、空间重叠融合 总结 前言 众所周知,熟悉GIS桌面软件的同学一定都知道,想要对空…

使用goland IDE编写go windows ui

最近突发奇想,想实现一款工作节奏的提示安排小闹钟。那首先解决的就是UI。本人擅长go语言。那go在windows ui的探索肯定有人做过了吧。一查还真有,通过知乎,csdn等查到目前支持最好的就是walk库了。那走起试试。 一、拷贝go代码 将官网例子…

WiFi 7 的核心要点

目录 WiFi 7 是什么? WiFi 7 的主要feature功能: 320Mhz channel 4K QAM Multi-Link Operation (MLO),多链路操作 512 block ACK OFDMA:multiple RUs to single STA. 总结:性能是第一优先级,WiFi 7&#xf…

Multi ElasticSearch Head插件基本操作

Multi ElasticSearch Head插件安装好之后我们可以进行一些基本的操作。 1、复合查询 因为ES提供了一些Restful风格的接口,可以让任何语言去调用,因此我们可以将之前的请求地址粘贴到Multi ElasticSearch Head插件里面,选择GET请求方式&#x…

RIP——路由信息协议

目录 1 内部网关协议 RIP 1.1 协议 RIP 的工作原理 1.2 RIP“距离”的定义 1.3 RIP 协议的三个特点 1.4 RIP 协议的优缺点 1.5 路由表的建立 路由表主要信息和更新规则 2 距离向量算法 3 RIP2 报文 4 坏消息传播得慢 5 启动RIP 启动RIP: router rip 命令 启用和检…

Elasticsearch:Geoshape query

Geoshape 查询可以用于过滤使用 geo_shape 或 geo_point 类型索引的文档。 geo_shape 查询使用与 geo_shape 或 geo_point 映射相同的索引来查找具有与查询形状相关的形状的文档,并使用指定的空间关系:相交(intersect)、包含(con…

Git介绍与常用命令总结

Git介绍与其常用命令总结 1、Git介绍2、Git的使用3、Git常用命令3.1 初始化仓库3.2 克隆仓库3.3 配置用户信息3.4 提交代码(Commit)3.5 推送代码(Push)3.6 拉取代码(Pull)3.7 分支(Branch)3.8 远程仓库(Remote)3.9 撤销回退本地改动3.10 更新本地仓库与远程仓库 1、Git介绍 Gi…

AI Prompt工程师 学习整理

前言 如果说Al大语言模型(LLM,Large Language Model)是宝藏我,那么Prompt提示词就是打开宝藏的钥匙。 最新一代的Al大语言模型具备出色的创作能力,能够生成富有人类感情、严谨逻辑、多场景应用的内容,而如何获得高质量的回答,正确学习使用Prompt提示词是关键。 &#x1f4a5…

【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文 引言 题目将于2024年2月2日6:00发布。我们团队将会在8点前准时更新问题分析,逐步更新数学模型和实现代码,最后发布完整的论文。 更新进展: &#xff08…

轻型民用无人机驾驶航空器安全操控——理论考试多旋翼部分笔记

今天已经可以在线考取轻型民用无人机驾驶航空器执照了,所以我也在在线观看完视频之后整理了如下的知识点,所有知识点全部来自UOM平台。 目录 航空器知识 (1)多旋翼民用无人驾驶航空器螺旋桨的作用 (2&#x…

Servlet简述

Servlet是动态web资源开发技术,其实就是一个接口,将来定义Servlet实现类时,都必须实现该接口,并让web服务器运行Servlet 1.快速入门 使用注释配置访问路径在Servlet3.0之后应用,在此之前都是使用xml配置文件来配置的。…

WPS WORD 宏导出高亮文本

WPS手机版可以直接导出高亮文本,但只能导出手机编辑的部分,如果同时在电脑上编辑过,电脑上高亮的无法导出,因为作者不一样。 但WPS电脑版没有这个功能,只能通过宏编程实现。 这里利用了审阅模式,在文字高亮…

springBoot+Vue汽车销售源码

源码描述: 汽车销售管理系统源码基于spring boot以及Vue开发。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、 财务报表等功能,提供经理和销售两种角色进行管理。 技术架构: idea(推荐)、jdk1.8、mysql5.X(不能为8驱动不匹配)、ma…