STM32之RCC(1)

本文介绍了STM32的RCC(复位和时钟控制)功能,详细阐述了时钟树的概念,并通过一个配置时钟实验,讲解了如何使用HSE时钟源产生72MHz系统时钟。实验包括硬件设计、软件设计和编程要点,通过思考问题探讨了外设时钟开启的原因。同时,对比了系统内部72MHz配置代码与自写代码的差异。
摘要由CSDN通过智能技术生成

一、RCC简介

RCC是:Reset and Clock Control(复位和时钟控制),是STM32内部的一个重要外设。

RCC能够管理各个时钟源和时钟分频,为各个外设提供时钟使能。RCC模块可以通过寄存器操作或库函数配置系统时钟和总线时钟。

image-20231128005037720

二、时钟树

学习时钟,最重要的就是理解时钟树

image-20231128002517675

三、配置时钟实验

1、使用HSE

一般情况下,都是使用HSE,然后HSE经过PLL倍频之后作为系统时钟。通常的配置是:HSE=8M, PLL的倍频因子为9。 系统时钟就设置成:SYSCLK=8M*9=72M

2、硬件设计

​ 1)、rcc

​ 2)、LED一个

RCC是单片机内部资源,不需要外部电路。通过led闪烁的频率来直观的判断不同系统时钟频率对软件的延时效果

3、软件设计

编写两个RCC驱动文件,bsp_rccclkconfig.h和bsp_rccclkconfig.c,用来存放RCC系统时钟配置函数

4、编程要点

编程要点对应功时钟树图中红色序号:

1、开启时钟信号HSE/HSE,并等待其稳定

2、设置AHB、APB2、APB1的预分频因子

3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置

4、开启PLL,并等待其稳定

5、把PLLCLK切换为系统时钟SYSCLK

6、读取时钟切换状态位,确保PLLCLK被选为系统时钟

void Hse_SetSysClk(uint32_t RCC_PLLMul_x)
{
   
	ErrorStatus HSEStatus;
	//把RCC寄存器复位成复位值,以便重新配置时钟系统
	RCC_DeInit();
	
	//1、使能HSE并等待其稳定
	RCC_HSEConfig(RCC_HSE_ON);
	HSEStatus=RCC_WaitForHSEStartUp();
	if(HSEStatus ==SUCCESS)
	{
   
		//使能预取指缓冲区,并设置闪存延迟周期为2个时钟周期。这样可以提高闪存的存取速度和性能
		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
		FLASH_SetLatency(FLASH_Latency_2);
		
        //2、设置AHB、APB2、APB1的预分频因子HCLK = SYSCLK、PCLK2 = HCLK、PCLK1 = HCLK/2
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div2);
		RCC_PCLK2Config(RCC_HCLK_Div1);
        
		//3、设置PLL的时钟来源为HSE,和PLL的倍频因子RCC_PLLMul_x
		RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);
        
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值