STM32 寄存器配置笔记——系统时钟配置 HSE as PLL

news2024/9/27 21:18:49

一、概述

       本文主要介绍使用HSE高速外部时钟通过PLL倍频输出72MHZ的时钟作为系统时钟。下图为时钟树。

        使用正点原子的开发板调试OSC_IN、OSC_OUT接的是8MHZ的晶振即为HSE时钟。

二、配置流程

        1)复位RCC相关的所有寄存器

            复位内容是参考正点原子例程,按照博主理解只要将HSE对应会影响到的RCC寄存器复位即可。本博客重点主要在时钟配置原理,此步骤可以不用特别关注。

 	RCC->APB1RSTR = 0x00000000;//
	RCC->APB2RSTR = 0x00000000; 
	  
  	RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能,其他关闭
  	RCC->APB2ENR = 0x00000000; //外设时钟关闭		   
  	RCC->APB1ENR = 0x00000000;   
	RCC->CR |= 0x00000001;     //使能内部高速时钟HSION														 
	RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], ADCPRE[1:0], MCO[2:0]
	RCC->CR &= 0xFEF6FFFF;     //复位HSEON, CSSON, PLLON
	RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP
	RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE
	RCC->CIR = 0x00000000;     //关闭所有中断

        2)使能HSE时钟

        使能HSE时钟等待就绪。

	RCC->CR |= 1 << 16;       // enable HSE clock
	while (!(RCC->CR >> 17)); // wait HSE rdy

      

        3)配置PLLXTPRE

             配置为0,使得HSE作为PLL输出时不分频,上面复位操作已经配置为0这里就不重新配。

        4)配置PLLMUL

       

RCC->CFGR |= PLL << 18;   // set PLLMUL 

        5)配置PLL时钟源为HSE

      

RCC->CFGR |= 1 << 16;     // PLLSRC HSE as PLL clock

        6)配置FLASH等待周期

         由于半导体制造工艺的限制,存放程序的FLASH存储器不可能达到这么高的工作频率,这样当CPU直接访问Flash存储器时必须插入等待周期以得到正确的结果。

         在<<STM32F10xxx存编程手册>>有如下规定:

        ACR寄存器内容:

        7)使能PLL

        使能PLL时钟,等待PLL时钟就绪。

	RCC->CR |= 1 << 24;       // PLLON PLL enable
    while(!(RCC->CR >> 25));  // wait PLL rdy

        8)PLL时钟作为系统时钟

        配置PLL时钟作为系统时钟等待配置完成。

        

RCC->CFGR |= 0x00000002;  // PLL as sysclk

do
{
    temp = RCC->CFGR>>2;
	temp &= 0x3;
} while (temp != 2);       // temp = 2 indicator PLL as sysclk suc

三、源码

        整个代码调用情况如下:

        

void Stm32_Clock_Init(u8 PLL)
{
	unsigned char temp=0;   
	MYRCC_DeInit();		      // reset and cfg vector tab
	RCC->CR |= 1 << 16;       // enable HSE clock
	while (!(RCC->CR >> 17)); // wait HSE rdy
    RCC->CFGR |= 0x00000400;  // APB1=DIV2;APB2=DIV1;AHB=DIV1;
	PLL -= 2;                 // 0 - PLL * 2   14/15 - PLL * 16
    RCC->CFGR |= PLL << 18;   // set PLLMUL 
	RCC->CFGR &= ~(1 << 17);  // PLLXTPRE set 0 HSE PLL DIV1
	RCC->CFGR |= 1 << 16;     // PLLSRC HSE as PLL clock
	FLASH->ACR |= 0x02;	      // LATENCY read Flash clock wait states
	RCC->CR |= 1 << 24;       // PLLON PLL enable
    while(!(RCC->CR >> 25));  // wait PLL rdy
	RCC->CFGR |= 0x00000002;  // PLL as sysclk

	do
	{
	    temp = RCC->CFGR>>2;
		temp &= 0x3;
	} while (temp != 2);       // temp = 2 indicator PLL as sysclk suc
}

        在时钟配置完成后,通过能够成功点亮LED来验证配置成功。

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

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

相关文章

家政保洁预约小程序app开发特点有哪些?

家政预约服务小程序APP开发的特点介绍&#xff1b; 1. 低成本&#xff1a;用户通过手机APP下单&#xff0c;省去了中介费用&#xff0c;降低了雇主的雇佣成本。 2. 高收入&#xff1a;家政服务人员通过手机APP接单&#xff0c;省去了中介费用&#xff0c;从而提高了服务人员的…

2023.11.20使用flask做一个简单图片浏览器

2023.11.20使用flask做一个简单图片浏览器 功能&#xff1a; &#xff08;1&#xff09;输入指定路径&#xff0c;打开文件夹 &#xff08;2&#xff09;判断文件格式为图片 &#xff08;3&#xff09;在前端进行预览 &#xff08;4&#xff09;使用bootstrap进行简单美化 ma…

Android Studio 引入Xui框架-简单应用

Android Studio Flamingo | 2022.2.1 Patch 2 Android 11开发、Gradle Version 8.0、 jdk17 源代码&#xff1a;GitHub - xuexiangjys/XUI: &#x1f48d;A simple and elegant Android native UI framework, free your hands! (一个简洁而优雅的Android原生UI框架&#xff…

Centos8部署LNMP架构

LNMP架构 LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux&#xff0c;N指Nginx&#xff0c;M一般指MySQL&#xff0c;也可以指MariaDB&#xff0c;P一般指PHP&#xff0c;也可以指Perl或Python。 1.Linux是一类Unix计算机操作系统的统称…

13 redis中的复制的拓扑结构

1、一主一从 为了性能考虑&#xff0c;主节点可以不开启AOF&#xff0c;但是要避免重启。 2、一主多从 适用于读操作的场景。由于从节点多&#xff0c;所以主的复制压力大 3、树状主从 数据先同步到redisB,redisC从节点C,E来看&#xff0c;redisB相当于主机了&#xff0c;可以…

微服务 Spring Cloud 8,开源RPC框架如何选型?

目录 一、开源RPC框架有哪些&#xff1f;1、跟语言平台绑定的开源RPC框架2、跨语言平台的开源RPC框架 二、跟语言平台绑定的开源RPC框架 -- Dubbo1、Dubbo的架构主要包含四个角色2、Dubbo的调用框架是如何实现的&#xff1f; 三、如何选择&#xff1f;四、跨语言平台的开源RPC框…

Linux shell编程学习笔记27:tput

除了stty命令&#xff0c;我们还可以使用tput命令来更改终端的参数和功能。 1 tput 命令的功能 tput 命令的主要功能有&#xff1a;移动更改光标、更改文本显示属性&#xff08;如颜色、下划线、粗体&#xff09;&#xff0c;清除屏幕特定区域等。 2 tput 命令格式 tput [选…

基于SSM的校园活动资讯网设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

OceanBase:OBServer节点管理

目录 1.查看节点 2.添加节点 2.1 创建数据目录 2.2.OceanBase 运行时所依赖的部分三方动态库 2.3.安装 OceanBase 数据库的 RPM 包 2.4.启动节点 observer 进程 2.5.向集群中添加节点 3.隔离节点 4.重启节点 4.1 停止服务 4.2 转储 4.3 关闭进程 4.4 启动进程 4.…

单体进化微服务:拆分、注册、调用、网关、过滤、治理、分布式事务

这里写目录标题 基本介绍生产-消费-网关父依赖生产者服务消费者服务网关服务common服务 感想 基本介绍 Spring Cloud 是一个用于构建分布式系统和微服务架构的开发工具包。它提供了一系列的功能和组件&#xff0c;用于解决微服务架构中的常见问题&#xff0c;如服务注册与发现…

Python---函数的应用案例(多个)

案例&#xff1a;使用print方法打印一条横线 print(- * 40) 案例&#xff1a;对上个案例进行升级&#xff0c;可以根据输入的num数值&#xff0c;生成指定数量的横线 def print_lines(num, length):""" print_lines函数主要作用用于生成多条指定长度的横线&…

Windows安装MongoDB

1、下载MongoDB的zip&#xff0c;解压 2、创建目录 mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\db mkdir D:\JavaSoftware\Database\MongoDB\mongodb-win32-x86_64-windows-5.0.8\data\log 3、创建一个配置文件mongod.cfg&#xff0c…

【JavaEE】Servlet实战案例:表白墙网页实现

一、功能展示 输入信息&#xff1a; 点击提交&#xff1a; 二、设计要点 2.1 明确前后端交互接口 &#x1f693;接口一&#xff1a;当用户打开页面的时候需要从服务器加载已经提交过的表白数据 &#x1f693;接口二&#xff1a;当用户新增一个表白的时候&#xff0c;…

Self-Supervised Exploration via Disagreement论文笔记

通过分歧进行自我监督探索 0、问题 使用可微的ri直接去更新动作策略的参数的&#xff0c;那是不是就不需要去计算价值函数或者critic网络了&#xff1f; 1、Motivation 高效的探索是RL中长期存在的问题。以前的大多数方式要么陷入具有随机动力学的环境&#xff0c;要么效率…

1.Qt5.15及其以上的下载

Qt5.15及其以上的下载 简介&#xff1a; ​ Qt是一个跨平台的C库&#xff0c;允许开发人员创建在不同操作系统&#xff08;如Windows、macOS、Linux/Unix&#xff09;和设备上具有本地外观和感觉的应用程序。Qt提供了一套工具和库&#xff0c;用于构建图形用户界面&#xff0…

C语言基础---函数、数组

目录 一、函数 二、数组​ 一、函数 交换两个数&#xff1a; 发现这样并没有交换a和b的值&#xff0c;只是交换了x和y的值&#xff0c;这是因为&#xff1a; //当实参传递给形参的时候&#xff0c;形参是实参的一份临时拷贝 //对形参的修改不能改变实参 实参与形参是…

linux高性能服务器

第一部分、TCP/IP协议详解 TCP协议为应用层提供可靠的、面向连接的和基于流的服务 可靠 使用超时重传(发送端在发送报文后启动一个定时器&#xff0c;若定时器在规定时间内没有收到应答就会重发该报文)&#xff0c;发送应答机制(发送端发送的每个TCP报文都必须得到接收方的应答…

城市易涝点怎么安装万宾科技内涝积水监测仪?

城市内涝是多个城市广泛存在的问题&#xff0c;经常给城市的居民和基础设施带来一些安全威胁。暴雨引发的道路积水和交通中断、财产损失&#xff0c;甚至公共安全威胁都是城市管理者需要提前预防的问题。为了解决这些问题&#xff0c;内涝积水监测仪的应用是一大重要的举措&…

机器视觉兄弟们,新工作之前,不要过度准备

大家对工作的渴望我感同身受&#xff0c;有人去机器视觉培训机构培训&#xff0c;有人默默无闻地努力学习&#xff0c;不都是为了一份高新好工作吗&#xff1f; 实际上是&#xff1a; 技术高的人&#xff0c;劳动力贬值。 技术低的人&#xff0c;没有生存空间。 你有野心&…

linux 开发板以太网通过Ubuntu上外网方法

在开发板嵌入式设备&#xff0c;有一个mgbe网卡&#xff0c;用网线与连接soc的网卡&#xff0c;和外接网卡&#xff0c;将网卡usb接口插入电脑&#xff0c;选择接入到Ubuntu系统 在Ubuntu将能识别到这个外接网卡&#xff0c;这样就可以通过Ubuntu和soc通讯了&#xff0c; 如下…