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.mfbz.cn/a/365505.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「效果图渲染」效果图与3D影视动画渲染平台

效果图渲染和3D影视动画渲染都是视觉图像渲染的领域应用。效果图渲染主要服务于建筑、室内设计和产品设计等行业,这些领域通常对视觉呈现的精度和细节有较高要求。与之相比,3D影视动画渲染则普遍应用于电影、电视、视频游戏和广告等媒体领域,…

力扣461. 汉明距离(位运算)

Problem: 461. 汉明距离 文章目录 题目描述思路复杂度Code 题目描述 思路 Problem: 力扣191. 位1的个数(位运算) 该题只需要在上题的基础上先对两个数进行一次异或操作即可 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( 1 ) O(1) O(1) Code …

【linux】linux环境变量-详解-备查

【linux】linux环境变量-详解-备查 一、类型 **永久变量:**通过修改配置文件,配置之后变量永久生效。 用户变量(局部变量):修改的设置只对某个用户的路径或执行起作用; 在用户目录下的.bash_profile文件…

GPT-4这么厉害,能替代中之人吗?我们找虚拟偶像粉聊了聊

本文为 澎湃号湃客 至顶头条 联合出品 作者 | 张晓迪 编辑 | 王恒婷 就在人们还在讨论ChatGPT如何商业化时,GPT-4直接给出了答案。 3月17日凌晨,在GPT-4发布后的48小时,微软Office全家桶也带着GPT-4生成的Copilot来到办公室里给打工人“减负”了。 多模态大型语言模型…

【教程】谈一谈 IPA 上传到 App Store Connect 的几种方法

引言 在应用开发过程中,将应用程序上传到 App Store Connect 是一个关键的环节。本文将探讨几种常见的 IPA 文件上传方法,包括 Xcode、Application Loader、altool、Appuploader以及Transporter。通过本文的介绍和指导,读者将能够了解不同的…

看完这篇文章,你一定能看懂Datasheet!

大家好,我是砖一。 针对以上学妹的疑问,我有几点建议,大家可以听一下~ 一,怎么样查找Datasheet(数据手册) 大多数人下意识就点开浏览器,把型号往里面一输,不建议这样。 对于刚入行…

文心一言APP推出新功能:数字分身,只需一张照片和三句话即可创建自己的电子替身

文心一言APP近日推出了一项炸裂的新功能:数字分身。这一创新技术让用户通过一张照片和三句语音录制,轻松创建属于自己的数字分身。这一功能降低了数字分身技术的门槛,让更多人能够体验到个性化的虚拟形象。华为手机市场直接搜“文心一言”就可…

uniapp中组件库Mask 遮罩层 的使用方法

目录 #平台差异说明 #基本使用 #嵌入内容 #遮罩样式 #API #Props #Events #Slot 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景 #平台差异说明 AppH5微信小程序支付宝小程序百度小程…

【TikTok选品】一周创下两百万销售额!这款小小遮瑕膏,如何从美区美妆市场杀出重围?

新年新气象。2024年以来,美区销售额周榜常有黑马,看得出卖家都卯足了劲在新的一年打下更亮眼的业绩。超店有数观察了TikTok选品数据,监测到上周TikTok美区就有一个新品在竞争激烈的美妆市场中杀出重围,在一周内创下200万美金的超高…

智慧工地可视化综合管理云平台 PC+APP

目录 一、智慧工地可视化数据大屏功能一览 1.首页 2.视频监控 3.机械设备 4.环境监测 5.安全管理 6.质量管理 7.劳务分析 8.进度管理 9.报警统计 二、项目人员管理 1.信息管理 2.信息采集 3.证件管理 危大工程管理 一、智慧工地可视化数据大屏功能一览 包括&am…

第二期《计算机视觉处理设计开发工程师》的培训通知

近日我们刚刚结束了《计算机视觉处理设计开发工程师》证书第一期培训,培训效果良好,所有学员均通过工信部统一线上考试,坐等证书了。鉴于学员们的反应我们第二期课程如约而至。 证书出台背景:为进一步贯彻落实中共中央印发《关于深…

F - Fence Bowling ——二分答案

Olav正在独自度过一个晚上,在保龄球馆练习。令人恼火的是,他所在的球道的侧栏被卡在了活动位置,所以如果球出界,它会简单地反弹回来。 这对Olav来说似乎是不公平的,因此他决定任何一次投球如果在击中销钉之前没有在篱笆…

【C语言】初阶指针(2)

目录 前言 1. 指针访问数组 1.1 数组名的含义 1.2 使用指针访问数组 2. 一维数组传参的本质 3. 二级指针 4. 指针数组 4.1 指针数组模拟二维数组 结语 前言 在本篇文章中,我们将要一起来探讨指针与数组之间的关系,以及如何理解指针数组及其运用…

adb脚本操作

用荣耀80手机测试 echo off setlocal enabledelayedexpansion adb shell am start com.android.settings timeout /t 2 /nobreak >nul adb shell input tap 500 1300 timeout /t 2 /nobreak >nul adb shell input tap 500 800 timeout /t 2 /nobreak >nul adb she…

常用数据分析模型与方法

常用数据分析模型与方法 在进行数据分析过程中,通常需要使用各种模型来证明自己的分析观点,一是为了使自己的结论更具备说服力,二是让自己的论证过程更具备逻辑性和条理性。 FineBI 推出部分数据分析方法,帮助用户更好的使用 BI 进…

gilab 展示测试用例结果详情页面

Python 此示例使用带有 --junitxmlreport.xml 标志的 pytest 将输出格式化为 JUnit 报告 XML 格式:gitlab 会自动去解析report.xml 这个文件,并且将每个case的测试结果展示在gitlab中pytest:stage: testscript:- pytest --junitxmlreport.xmlartifacts:w…

docker-学习-4

docker学习第四天 docker学习第四天1. 回顾1.1. 容器的网络类型1.2. 容器的本质1.3. 数据的持久化1.4. 看有哪些卷1.5. 看卷的详细信息 2. 如何做多台宿主机里的多个容器之间的数据共享2.1. 概念2.2. 搭NFS服务器实现多个容器之间的数据共享的详细步骤2.3. 如果是多台机器&…

【Leetcode】2670. 找出不同元素数目差数组

文章目录 题目思路代码结果 题目 题目链接 给你一个下标从 0 开始的数组 nums ,数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示,其中 diff[i] 等于前缀 nums[0, …, i] 中不同元素的数目 减去 后缀 nums[i 1, …, …

精酿啤酒:从原料采购到酿造过程的严格把控

Fendi Club啤酒在市场上的卓着表现,与其从原料采购到酿造过程的严格把控密不可分。这种严格把控确保了啤酒的品质和口感,满足了消费者对品质啤酒的需求。 首先,Fendi Club啤酒对原料的采购有着严格的标准。他们深知,上好的原料是酿…

获取真实 IP 地址(一):判断是否使用 CDN

一、介绍 CDN,全称为内容分发网络(Content Delivery Network),是一种网络架构,旨在提高用户对于网络上内容的访问速度和性能。CDN通过在全球各地部署分布式服务器节点来存储和分发静态和动态内容,从而减少…
最新文章