STM32-时钟

一、时钟定义

时钟是单片机运行的基础,时钟信号推动单片机各个部分执行相应的指令。时钟就像CPU的脉搏,定义着CPU的速率,只有定义了时钟,各部分才能执行指令。

一般使用三种时钟源驱动系统时钟(SYSCLK):

还有两种次级时钟:

LSI(RC LSI):一般用作驱动独立看门狗

LSE:一般用作驱动RTC失时钟

一般系统在未使用的情况下会将时钟disable以降低功耗,故在配置需要的功能前需要先使能对应时钟

2、时钟树

3、各时钟源

HSE:高速外部时钟信号,靠有源晶振(1~50M)或无源晶振(4~26M)提供

外部提供(例35M)—M分频(一般为35)—N倍频(一般用最高336)—VCO—P分频(一般2分频)—PLL锁相环—①提供给AHB总线(此时为最高168M);②提供给APB2总线(此时需要先2分频得到最高84M);③提供给APB1总线(此时需要再2分频得到最高42M)

HSI:高速内部时钟信号,由内部16MHZ RC振荡器生成,一般使用在当HSE损坏无法启动时,系统自启HSI,直到HSE启动成功

PLL:锁相环时钟,一般用于将低速时钟通过逐级倍频成高速时钟提供给系统,由HSE和HSI提供

一般使用HSE时钟

4、HSE配置步骤及程序

1. 复位时钟
RCC_DeInit();
配置系统时钟需要先对时钟进行复位

2. HSE使能并等待其就绪
RCC_HSEConfig(RCC_HSE_ON);
HSEstatue = RCC_WaitForHSEStartUp();

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);
配置第二个参数为:RCC_PLLMul_9,即9倍频;
配置第二个参数为:RCC_PLLMul_16,即16倍频;

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

6. 选择系统时钟
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);

7. 设置HCLK,PCLK2,PCLK2时钟
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div2);

相当于对AHB、APB2和APB1进行的分频
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值