STM32入坑(六)使用HSE配置系统时钟

STM32入坑(六)使用HSE配置系统时钟

简介

名称:使用HSE配置时钟
功能:配置系统时钟为18M/72M/128M
硬件资源:STM32开发板、(LED灯)

原理

先上一张图:
在这里插入图片描述
我们使用STM32时基本都是使用 HSE,然后 HSE 经过 PLL 倍频之后作为系统时钟。通常的配置是:HSE=8M,PLL 的倍频因子为:9,系统时钟就设置成:SYSCLK = 8M * 9 = 72M。使用 HSE,系统时钟 SYSCLK 最高是 128M。程序中我们也将按照上图所示,按照1-7的步骤进行配置。

用到的GPIO

1.PD2:此GPIO为LED灯端口,用灯的闪烁可明显的看出系统时钟的变化。
2.PA8:此GPIO为系统时钟的监视测量端口,用示波器可检测到系统时钟 的频率。

配置方法及程序

1. 复位时钟
RCC_DeInit();
要使配置的系统时钟生效,复位时钟是必须的一步。

2. HSE使能并等待其就绪
RCC_HSEConfig(RCC_HSE_ON);
HSEstatue = RCC_WaitForHSEStartUp();
相当于时钟树中的步骤1.

3. HSE使能预取值,配置等待周期
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
FLASH_SetLatency(FLASH_Latency_2);
这一步是配置SYSCLK 周期与闪存访问时间的比例设置,这里统一设置成 2。配置成0或1,时间短可能闪存会跟不上。

4. 配置时钟来源和倍频系数
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_2);
相当于时钟树中的步骤2和3;
配置第二个参数为:RCC_PLLMul_9,即9倍频可以到72M;
配置第二个参数为:RCC_PLLMul_16,即16倍频可以到128M;

5. 使能PLL并等待其稳定
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);

6. 选择系统时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);
相当于时钟树中的步骤4

7. 设置HCLK,PCLK2,PCLK2时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
相当于时钟树的5,6,7

配置RCC时钟的程序如下:

void RCCCLOCK_Init(void)
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值