stm32精简笔记2——时钟树

1 时钟源

1)石英晶振:稳定、体积大。

2)RC振荡电路:成本低、频率低、温漂大、体积小。

名称简写晶振作用
外部高速振荡器HSE4~16MHZSysclk/RTC
内部高速振荡器HSI8MHZSysclk
外部低速振荡器LSE32.768KHZRTC
内部低速振荡器LSI40KHZRTC/IWDG

2 时钟树

  • HSE不分频->锁相环9倍频->系统时钟源
  • 系统时钟源->9分频->SysTick
  • 系统时钟->不分频->HCK、APB2
  • 系统时钟->2分频->APB1

在这里插入图片描述

3 主要寄存器

1)时钟控制寄存器 CR:主要是时钟位和就绪位。

2)时钟配置寄存器 CRGR:主要是分频比、倍频因子、MCO的配置(输出主时钟)。

3)时钟中断寄存器 CIR:主要是中断标志位和使能位。

4 系统时钟配置流程

1)开启HSE、HSI,并等待时钟就绪。

2)打开flash的预取指缓冲区设置为2。

3)设置HCLK、PCLK1、PCLK2的预分频因子。

4)设置PLL时钟源位HSE,倍频因子为9.

5)打开PLL并等待PLL就绪。

6)选择锁相环时钟为系统时钟。

7)配置系统时钟源,并等待系统时钟就绪。

5 HSE时钟配置

#include "sysclock.h"

void hse_init(unsigned int RCC_PLLMul_x){
        /*复位时钟*/
	RCC_DeInit();
       /*打开HSE*/
	RCC_HSEConfig(RCC_HSE_ON);
        /*等待HSE就绪*/
	if(RCC_WaitForHSEStartUp() == SUCCESS){
        	/*打开并配置预取指缓冲区*/
		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
		FLASH_SetLatency(FLASH_Latency_2);
        	/*设置HCLK、PCLK1、PCLK2的分频因子*/
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div2);
		RCC_PCLK2Config(RCC_HCLK_Div1);
                /*配置锁相环的时钟源、倍频因子*/
		RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);
        	/*使能锁相环并等待锁相环就绪*/
		RCC_PLLCmd(ENABLE);
		while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) != SET);
        	/*配置系统时钟源并等待就绪*/
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
		while(RCC_GetSYSCLKSource() != 0x08);
	}else{
	
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值