嵌入式开发学习之--RCC(下)

news2025/7/19 21:48:55

文章目录

  • 前言
  • 一、使用HSE
  • 二、使用HSI
    • 三、代码编写
  • 总结


前言

这一篇记录一下时钟的具体实验。


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用HSE

一般情况下,我们都是使用 HSE,然后 HSE 经过 PLL 倍频之后作为系统时钟。F429系统时钟最高为 180M,这个是官方推荐的最高的稳定时钟,如果你想铤而走险,也可以超频,超频最高能到 216M

如果我们使用库函数编程,当程序来到 main 函数之前,启动文件:
startup_stm32f429_439xx.s 已经调用 SystemInit()函数把系统时钟初始化成 180MHZ,SystemInit()在库文件:system_stm32f4xx.c 中定义。如果我们想把系统时钟设置低一点或者超频的话,可以修改底层的库文件,但是为了维持库的完整性,我们可以根据时钟树的流程自行写一个。

二、使用HSI

当 HSE 直接或者间接(HSE 经过 PLL 倍频)的作为系统时钟的时候,如果 HSE 发生故障,不仅 HSE 会被关闭,连 PLL 也会被关闭,这个时候系统会自动切换 HSI 作为系统时钟,此时 SYSCLK=HSI=16M,如果没有开启 CSS 和 CSS 中断的话,那么整个系统就只能在低速率运行,这是系统跟瘫痪没什么两样。

如果开启了 CSS 功能的话,那么可以当 HSE 故障时,在 CSS 中断里面采取补救措施,使用 HSI,重新设置系统频率为 180M,让系统恢复正常使用。但这只是权宜之计,并非万全之策,最好的方法还是要采取相应的补救措施并报警,然后修复 HSE。临时使用 HSI 只是为了把损失降低到最小,毕竟 HSI 较于 HSE 精度还是要低点。

F103 系列中,使用 HSI 最大只能把系统设置为 64M,并不能跟使用 HSE 一样把系统时钟设置为 72M,究其原因是 HSI 在进入 PLL 倍频的时候必须 2 分频,导致 PLL 倍频因子调到最大也只能到 64M,而 HSE 进入 PLL 倍频的时候则不用 2 分频。

在 F429 中,无论是使用 HSI 还是 HSE 都可以把系统时钟设置为 180M,因为 HSE 或 者 HSI 在进入 PLL 倍频的时候都会被分频为 1M 之后再倍频。还有一种情况是,有些用户不想用 HSE,想用 HSI,但是又不知道怎么用 HSI 来设置
系统时钟,因为调用库函数都是使用 HSE,下面我们给出个使用 HSI 配置系统时钟例子,起个抛砖引玉的作用。

三、代码编写

代码如下(示例):

 /*
2 * m: VCO 输入时钟 分频因子,取值 2~63
3 * n: VCO 输出时钟 倍频因子,取值 192~432
4 * p: SYSCLK 时钟分频因子 ,取值 2,4,6,8
5 * q: OTG FS,SDIO,RNG 时钟分频因子,取值 4~15
6 * 函数调用举例,使用 HSE 设置时钟
7 * SYSCLK=HCLK=180M,PCLK2=HCLK/2=90M,PCLK1=HCLK/4=45M
8 * HSE_SetSysClock(25, 360, 2, 7);
9 * HSE 作为时钟来源,经过 PLL 倍频作为系统时钟,这是通常的做法
10 
11 * 系统时钟超频到 216M 爽一下
12 * HSE_SetSysClock(25, 432, 2, 9);
13 */
14 void HSE_SetSysClock(uint32_t m, uint32_t n, uint32_t p, uint32_t q)
15 {
16 __IO uint32_t HSEStartUpStatus = 0;
17 
18 // 使能 HSE,开启外部晶振,野火 F429 使用 HSE=25M
19 RCC_HSEConfig(RCC_HSE_ON);
20 
21 // 等待 HSE 启动稳定
22 HSEStartUpStatus = RCC_WaitForHSEStartUp();
23 
24 if (HSEStartUpStatus == SUCCESS) {
25 // 调压器电压输出级别配置为 1,以便在器件为最大频率
26 // 工作时使性能和功耗实现平衡
27 RCC->APB1ENR |= RCC_APB1ENR_PWREN;
28 PWR->CR |= PWR_CR_VOS;
29 
30 // HCLK = SYSCLK / 1
31 RCC_HCLKConfig(RCC_SYSCLK_Div1);
32 
33 // PCLK2 = HCLK / 2
34 RCC_PCLK2Config(RCC_HCLK_Div2);
35 
36 // PCLK1 = HCLK / 4
37 RCC_PCLK1Config(RCC_HCLK_Div4);
38 
39 // 如果要超频就得在这里下手啦
40 // 设置 PLL 来源时钟,设置 VCO 分频因子 m,设置 VCO 倍频因子 n,
41 // 设置系统时钟分频因子 p,设置 OTG FS,SDIO,RNG 分频因子 q
42 RCC_PLLConfig(RCC_PLLSource_HSE, m, n, p, q);
43 
44 // 使能 PLL
45 RCC_PLLCmd(ENABLE);
46 
47 // 等待 PLL 稳定
48 while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
49 }
50 
51 /*-----------------------------------------------------*/
52 //开启 OVER-RIDE 模式,以能达到更高频率
53 PWR->CR |= PWR_CR_ODEN;
54 while ((PWR->CSR & PWR_CSR_ODRDY) == 0) {
55 }
56 PWR->CR |= PWR_CR_ODSWEN;
57 while ((PWR->CSR & PWR_CSR_ODSWRDY) == 0) {
58 }
59 // 配置 FLASH 预取指,指令缓存,数据缓存和等待状态
60 FLASH->ACR = FLASH_ACR_PRFTEN
61 | FLASH_ACR_ICEN
62 | FLASH_ACR_DCEN
63 | FLASH_ACR_LATENCY_5WS;
64 /*-----------------------------------------------------*/
65 
66 // 当 PLL 稳定之后,把 PLL 时钟切换为系统时钟 SYSCLK
67 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
68 
69 // 读取时钟切换状态位,确保 PLLCLK 被选为系统时钟
70 while (RCC_GetSYSCLKSource() != 0x08) {
71 }
72 } else {
73 // HSE 启动出错处理
74 
75 while (1) {
76 }
77 }
78 }

形参说明:
在这里插入图片描述

HSI 为 16M,参数 m 我们一般也设置为 16,所以我们需要修改系统时钟的时候只需要修改参数 n 和 p 即可,SYSCLK=PLLCLK=HSI/m*n/p。

函数调用举例:HSI_SetSysClock(16, 360, 2, 7) 把系统时钟设置为 180M,这个跟库里面的系统时钟配置是一样的。HSI_SetSysClock(16, 432, 2, 9)把系统时钟设置为 216M,这个是超频,要慎用。


总结

时钟很关键,他是各个设备的生命线,一旦时钟没有正确配置,那么基于时钟的所有外设都会出问题。以后经常用经常配置就熟悉了。

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

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

相关文章

WRF模式、WRF-SOLAR、WRF-UCM、人工智能气象、FLEXPART、CMIP6数据处理、LEAP模型

1、《高精度气象模拟软件 WRF 实践技术及案例应用》 时间:12月17-18日、24-25日、31日 2、《双碳目标下太阳辐射预报模式【WRF-SOLAR】及改进技术在气象、农林、电力等相关领域中的实践应用 》 时间:12月10-11日、17日-18日 3、《第三期Python人工智能在…

TGK-Planner无人机运动规划算法解读

高速移动无人机的在线路径规划一直是学界当前研究的难点,引起了大量机器人行业的研究人员与工程师的关注。然而无人机的计算资源有限,要在短时间内规划出一条安全可执行的路径,这就要求无人机的运动规划算法必须轻型而有效。本文将介绍一种无…

Java项目:SSM企业OA管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目包含管理员与普通员工两种角色, 管理员角色包含以下功能: 岗位管理,部门管理,工龄奖金管理,员工管理,考勤管理,…

Linux下Jenkins服务器安装与使用

CentOS7环境下安装Jenkins​ JDK安装详细见: JDK安装详细步骤 ​ jenkins安装 Jenkins源添加 **注意: ** 问题1、在添加Jenkins源时会出现以下错误 这是由于没有安装wget软件包的原因 进行wget软件包的安装: yum -y install wget 问题2…

HTML网页设计制作——初音动漫(6页) dreamweaver作业静态HTML网页设计模板

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

市面上跑步耳机哪种好、2023年最适合跑步用的耳机排名

这几年,越来越多人注意到了身体健康的重要性,而随着今年飞盘、露营、刘畊宏女孩的兴起,再到卡塔尔世界杯,不断刺激大众运动、健身的热情,面对全民运动热潮,作为普通人应该如何保持激情,实现身心…

Pr:导出设置之编码设置

视频 VIDEO设置因所选导出格式而异。每种格式都有独特的要求,这些要求决定了哪些设置可用。以导出 H.264 文件格式为例,下面给出有关编码设置 Encoding Settings的选项及说明。性能Performance--硬件加速Hardware Encoding利用系统的可用 GPU 硬件&#…

前后端分离模式下,SpringBoot + CAS 单点登录实现方案

1.CAS服务端构建 1.1.war包部署 cas5.3版本 https://github.com/apereo/cas-overlay-template 构建完成后将war包部署到tomcat即可 1.2.配置文件修改 支持http协议 修改apache-tomcat-8.5.53\webapps\cas\WEB-INF\classes\services目录下的HTTPSandIMAPS-10000001.json&…

PDF文档一键自动生成目录和书签

在工作中经常会遇到编写文档的时候,当我们在word编写完文档后,一般可以自动生成一个目录。为了方便阅读和保护文档不被破坏,一般发送给别人的时候,需要把word文档转换成PDF格式。但是word文档转换为PDF格式后,目录虽然…

【强化学习论文合集】五.2017国际表征学习大会论文(ICLR2017)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

vscode electron安装环境

1. 安装nodejs Node.js 安装18.12.1LTS版本 安装完成后确认 node –-version 2. 安装electron npm install electron –g 验证是否安装成功 electron –v 没成功!!! 找解决方案 ​​​​​​​ 无法加载文件xxx.ps1,因为在…

信而泰OLT使用介绍-网络测试仪实操

一、OLT产品介绍 1.概述 PON作为FTTX网络发展的核心技术,局端设备OLT尤其重要。 本文档中主要介绍OLT的功能特性、业务配置 2.基本功能特性 2.1大容量和高集成度 ZXA10 C300集光接入、数据交换、路由处理于一体,提高了系统的集成度。 2.2 EPON功能…

ADSP-21489的图形化编程详解(3:音效开发例程-直通三个例程讲清楚)

Fireware 烧写好了之后,SigmaStudio 图形化开发的基本条件就达成了。我们重新来链接一下硬件,进入图形化编程的阶段,这个阶段我尽量多写一些例程,让大家能够尽快熟悉这个软件开发的全过程。 1. 直通(1) 1&…

C++类与对象(三)赋值运算符重载、const成员

目录 1.赋值运算符重载 1.1引入 1.2 运算符重载 1.3赋值运算符重载 1.4 前置和后置重载 2.const成员 3.取地址及const取地址操作符重载 1.赋值运算符重载 1.1引入 赋值运算符重载:用已存在的对象,给另一个已存在的对象赋值 还是使用上节日期类的…

[网络工程师]-应用层协议-电子邮件协议

常见的电子邮件协议有简单邮件传输协议、邮局协议和Internet邮件访问协议。 1、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP) SMTP主要负责将电子邮件从发送方传送到接收方,即对传输的规则做了规定,该协议工…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java医院疫情管理系统4f9a9

毕业设计其实不难,主要毕业的时候任务太紧了,所以大家都非常忙没有时间去做,毕业设计还是早做准备比较好,多花点时间也可以做出来的,建议还是自己动手去做,比如先选一个题,这样就有方向&#xf…

Markdown 图片左右对齐、居中、大小设置

Markdown 图片左右对齐、居中、大小设置 虽然经常使用 Markdown 写博客,但是,我却不太知道 Markdown 图片的位置和大小设置,今天刚好发表博客的时候,发觉图片位置有点丑,Google 查到了方法,所以记录学习一下…

李立宗《计算机视觉40例》PPT课件:第3章

《计算机视觉40例》PPT课件:第3章 《计算机视觉40例》第3章是OpenCV入门,这一章对OpenCV的使用进行了简单的介绍。这章目录如下: 本章集中介绍了OpenCV中一些最通用的知识,这些知识在后面的案例中应用比较广泛,所以集…

木聚糖-聚乙二醇-牛血清白蛋白,BSA-PEG-Xylan,牛血清白蛋白-PEG-木聚糖

木聚糖-聚乙二醇-牛血清白蛋白,BSA-PEG-Xylan,牛血清白蛋白-PEG-木聚糖 中文名称:木聚糖-牛血清白蛋白 英文名称:Xylan-BSA 纯度:95% 别称:牛血清白蛋白修饰木聚糖,BSA-木聚糖 PEG接枝修饰木聚糖 木聚糖-聚乙二醇…