首页 > 其他分享 >玩转STM32:解密RCC模块,轻松配置时钟!

玩转STM32:解密RCC模块,轻松配置时钟!

时间:2024-04-06 22:00:30浏览次数:24  
标签:-& HSE HSI STM32 玩转 PLL RCC 时钟

前言

在嵌入式系统开发中,时钟的配置是至关重要的一环,它直接影响着系统的稳定性和性能。而在STM32微控制器中,时钟的配置又是基于RCC(Reset and Clock Control)模块实现的。今天,我们就来揭开STM32中RCC模块的神秘面纱,探讨如何使用HSE(High Speed External)和HSI(High Speed Internal)时钟源配置时钟,为你的项目提供最佳性能!

RCC模块简介

RCC模块是STM32微控制器中的重要模块,负责控制系统的时钟。通过配置RCC寄存器,我们可以选择不同的时钟源,并设置时钟频率,以满足不同应用的需求。

HSE vs. HSI

在STM32中,我们可以选择使用外部晶振(HSE)或内部时钟源(HSI)作为系统时钟源。HSE通常提供更高的精度和稳定性,适合对时钟精确度要求较高的应用;而HSI则方便简洁,适合一些对时钟精度要求不是很高的应用。

配置HSE时钟

首先,我们需要启用HSE时钟源,并等待其稳定。接着,我们可以配置PLL(Phase-Locked Loop)来进一步调节时钟频率。下面是一个简单的代码示例:

```c
RCC-&gtCR |= RCC_CR_HSEON; // 启用HSE时钟
while(!(RCC-&gtCR & RCC_CR_HSERDY)); // 等待HSE稳定
RCC-&gtCFGR |= RCC_CFGR_PLLSRC_HSE; // PLL时钟源选择HSE
RCC-&gtCFGR |= RCC_CFGR_PLLMUL12; // PLL倍频系数设为12
RCC-&gtCR |= RCC_CR_PLLON; // 启用PLL
while(!(RCC-&gtCR & RCC_CR_PLLRDY)); // 等待PLL稳定
RCC-&gtCFGR |= RCC_CFGR_SW_PLL; // 将PLL设置为系统时钟源
while((RCC-&gtCFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待PLL成为系统时钟源
```

配置HSI时钟

如果选择使用HSI时钟源,配置起来会更加简单直接。下面是一个示例代码:

```c
RCC-&gtCR |= RCC_CR_HSION; // 启用HSI时钟
while(!(RCC-&gtCR & RCC_CR_HSIRDY)); // 等待HSI稳定
RCC-&gtCFGR |= RCC_CFGR_SW_HSI; // 将HSI设置为系统时钟源
while((RCC-&gtCFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_HSI); // 等待HSI成为系统时钟源
```

总结

通过本文的介绍,我们深入了解了STM32中RCC模块的作用以及如何使用HSE和HSI时钟源配置时钟。无论是对时钟精确度要求高的应用还是对简洁高效要求的项目,都可以根据实际需求选择合适的时钟源,并通过简单的配置实现系统时钟的稳定运行。希望本文能帮助你更好地应用STM32微控制器,提升项目开发效率和成功率!

欢迎在评论区留言,分享你的经验和想法。一起探讨,共同进步!
 

标签:-&,HSE,HSI,STM32,玩转,PLL,RCC,时钟
From: https://blog.csdn.net/2301_78660211/article/details/137198042

相关文章

  • STM32CubeIDE安装和汉化
    安装包请在官网下载双击安装,next点agree记得改,默认是C盘,改到其他的盘安装等待完成汉化:点击这里的add,我这是汉化过后期补的图片会出现下面的弹窗,然后把下面的网址复制到Location中https://download.eclipse.org/technology/babel/update-site/R0.17.1/2019-1......
  • STM32f1时钟系统及配置
    文章目录11.11.222.12.22.3选择乘除结合就是时钟系统?11.11.2HSEf1是8M原理图里面有RC震荡器电阻电容构成优缺点:石英那个成本高但精确和稳定RC在内部成本低一般用外部系统时钟锁相环分频要用HSE1分频*9AHB高速高新能总线AHB上的总线该分频......
  • CLion + STM32CubeMX【嵌入式开发 _环境搭建_C++】
         做嵌入式开发,一定对Keil、IAR不陌生,可它俩那与现代IDE格格不入的远古画风让人脑壳着实发疼。好一点的解决方案就是IAR或Keil联调VSCode,即代码在VSCode编写(调试),在IAR或Keil编译烧录。以VSCode强大而丰富的插件功能和简约优美的画面,已经使开发体验有了大幅的提......
  • 【stm32】I2C通信协议
    【stm32】I2C通信协议概念及原理如果我们想要读写寄存器来控制硬件电路,就至少需要定义两个字节数据一个字节是我们要读写哪个寄存器,也就是指定寄存器的地址另一个字节就是这个地址下存储寄存器的内容写入内容就是控制电路,读出内容就是获取电路状态I2C硬件规定(硬......
  • STM32串行通信驱动LCD12864(使用5V电源,驱动信号用5VFT的引脚(3.3V MCU))
    #include"spi.h"voidSPI_GPIO_Init(void){//hardwaremakePSBlowtoenableserialcommunicationGPIO_InitTypeDefGPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mo......
  • 五分钟玩转ApiHug-ApiHug101
       ......
  • STM32F103通过labview上位机上传温湿度数据到OneNET物联网平台
    资料下载地址:STM32F103通过labview上位机上传温湿度数据到OneNET物联网平台本实验通过两个STM32单片机设备分别测量室内外的温湿度,并把数据发送到上位机上传到ONENET物联网平台。大体数据传输流程如下:首先是注册OneNET平台账号,进入https://open.iot.10086.cn/ 从开发者......
  • STM32学习(六)USART串口协议
    一、通信接口1.通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。2.通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。STMF103C8T6支持以下通信协议 如果需要蓝牙无线遥控功能,陀螺仪加速度计测量姿态的功能,STM32没有,只能通过外挂芯片完成,这时就需要将......
  • STM32F1系列硬件I2C移植MPU6050DMP库
    目录前言STM32CubeMX配置过程工程移植与使用前言配置好硬件I2C拿过来直接用就行,一点也不用改这段时间在移植正点原子的MPU6050的库函数,网络上的教程大部分都是标准库同时也是软件模拟I2C的形式,这里我把正点原子的函数移植成了HAL库的硬件I2C的,下面会附带工程源码STM3......
  • STM32入门篇(LED、蜂鸣器和面包板简介)
    LED·LED:发光二极管,正向通电点亮,反向通电不亮·引脚长的一端为正极,短的一端为负极·以下两张图,是用STM32GPIO口驱动LED灯 R1作用:①防止LED因为电流过大而烧毁 ②调整LED的亮度           低电平驱动的电路(低点亮)      ......