STM32学习笔记3:时钟系统

时钟系统结构大致如下图:  

1.时钟树详解
 
 
先看上半部分。 
从上往下有: 
1. 独立看门狗时钟由LSI即低速内部时钟(RC时钟)产生,大致为32kHz,由于是RC电路产生,故时钟不稳定 
2. RTC可以选择上面的LSI时钟产生,也可以由低速外部时钟(LSE)产生,大小为32.768khz,具有功耗低,精度高特点 
3. MCO1/2是时钟输出管脚,每个管脚可以输出4种时钟源大小,具体可在图中看出,但最高不能超过100MHZ 
4. 系统时钟有三个来源;高速内部时钟(HSI)大小为16MHZ,高速外部时钟(HSE)通过OSC_OUT/IN接外部时钟或晶振,以及锁相(PLL)输出时钟,一般采用锁相环可以达到最大值168MHZ 
5. 主锁相环主要通过HSE(常用)或者HSI作为输入,然后*N/(M*P) 作为系统时钟的输入源之一,走/Q则供给USB,随机数发送器及SDIO时钟。 
副锁相环则是专用供给I2S(音频总线)时钟,可以来源外部时钟输入,HSE或者HSI 
6. 以太网和USB时钟

相关寄存器

一般来说,我们希望HCLK能达到最大速度即168MHZ,故我们常常采用锁相环输出。首先看CFGR寄存器:
 
HPRE是HCLK时钟分频,一般我们在此直接设为0000 
PPRE1/2为APB1/2时钟分频,其大小如下图: 

 
按需要设置即可
PLL_CFGR寄存器:
 
主要设置主/副PLL中 PQR分频系数的值和选择HSE/HSI作为时钟输入

RCC时钟控制寄存器,主要控制PLL和HSI,HSE时钟的使能和开关 

 
时钟使能寄存器: 任何外设开始时候都必须使能时钟。 操作非常简单,寄存器置1即使能。

实例:
  1. <font size="2">//返回值:0,成功;1,失败。
  2. u8 Sys_Clock_Set(u32 plln,u32 pllm,u32 pllp,u32 pllq)

  3.     u16 retry=0;
  4.     u8 status=0;
  5.     RCC->CR|=1<<16;             //HSE 开启 
  6.     while(((RCC->CR&(1<<17))==0)&&(retry<0X1FFF))retry++;//等待HSE RDY
  7.     if(retry==0X1FFF)status=1;  //HSE无法就绪
  8.     else   
  9.     {
  10.         RCC->APB1ENR|=1<<28;    //电源接口时钟使能
  11.         PWR->CR|=3<<14;         //高性能模式,时钟可到168Mhz
  12.         RCC->CFGR|=(0<<4)|(5<<10)|(4<<13);//HCLK 不分频;APB1 4分频;APB2 2分频. 
  13.         RCC->CR&=~(1<<24); //关闭主PLL
  14.         RCC->PLLCFGR=pllm|(plln<<6)|(((pllp>>1)-1)<<16)|(pllq<<24)|(1<<22);//配置主PLL,PLL时钟源来自HSE
  15.         RCC->CR|=1<<24;         //打开主PLL
  16.         while((RCC->CR&(1<<25))==0);//等待PLL准备好 
  17.         FLASH->ACR|=1<<8;       //指令预取使能.
  18.         FLASH->ACR|=1<<9;       //指令cache使能.
  19.         FLASH->ACR|=1<<10;      //数据cache使能.
  20.         FLASH->ACR|=5<<0;       //5个CPU等待周期. 
  21.         RCC->CFGR&=~(3<<0);        //清零
  22.         RCC->CFGR|=2<<0;        //选择主PLL作为系统时钟   
  23.         while((RCC->CFGR&(3<<2))!=(2<<2));//等待主PLL作为系统时钟成功. 
  24.     } 
  25.     return status;
  26. }</font>
复制代码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值