【单片机】单片机时钟

时钟是什么:就是机器的心脏,在心脏的规范跳动下有序的完成各项工作

了解时钟第一步是先清楚时钟是由什么发出的:主要是时钟源晶振和振荡器

例举一下stm32的时钟

  1. 1.HSI 振荡器时钟
  2. 2.HSE 振荡器时钟
  3. 3.32 kHz 低速内部 RC (LSI RC):该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用 于停机/待机模式下的自动唤醒。
  4. 4.32.768 kHz 低速外部晶振(LSE 晶振):用于驱动 RTC 时钟 (RTCCLK)
  5. 5.主 PLL (PLL) 时钟:一般是HSR或者HSE等通过倍频的方式来得到PLL时钟源

倍频和分频:倍频是将频率放大  分频是将频率缩小

晶振和振荡器的区别:晶振只是一个元件,而振荡器一由几个元件组成的电路。

一般使用外部时钟源作为系统时钟:因为外部时钟更加精准

看门狗为什么使用自己独立的低俗时钟:首先看门狗不需要很精准的时钟,然后如果主时钟失效系统,看门狗仍能在低俗时钟下正常工作

HCLK(AHB)总线 再通过分频得到   PCLK1(AHB1)    PCLK2(AHB2) :大部分外设都是通过PCLK1和PCLK2提供时钟频率

代码:

void RCC_Init(uint32_t PLLM, uint32_t PLLN, uint32_t PLLP, uint32_t PLLQ)
{
    RCC_DeInit();                       //将外设 RCC 寄存器重设为缺省值
    RCC_HSEConfig(RCC_HSE_ON);          //设置外部高速晶振( HSE)
    //该函数将等待直到 HSE 就绪,或者在超时的情况下退出
    if(SUCCESS == RCC_WaitForHSEStartUp())
    {
			RCC_HCLKConfig(RCC_SYSCLK_Div1);    //设置AHB时钟 不分频
        RCC_PCLK1Config(RCC_HCLK_Div2);     //设置低速APB1时钟PCLK2  HCLK/2
        RCC_PCLK2Config(RCC_HCLK_Div4);     //设置低速APB2时钟PCLK1	 HCLK/4
        RCC_PLLConfig(RCC_PLLSource_HSE, PLLM, PLLN, PLLP ,PLLQ);//设置 PLL 时钟源及倍频系数 公式SYSCLK = ((RCC_PLLSource/PLLM)*PLLN) / PLLP
        RCC_PLLCmd(ENABLE);                 //打开PLL
        while(RESET == RCC_GetFlagStatus(RCC_FLAG_PLLRDY));//等待PLL工作
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);          //设置PLL为系统时钟
        while(RCC_GetSYSCLKSource()!=0x08); //判断PLL是否为系统时钟
    }
    
    return;
}

时钟图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值