MCU的时钟讲解

        如果将MCU比作是人,那时钟就是人的心脏。没有时钟,MCU是动不起来的,所以时钟是非常重要的,那如何看懂和运用时钟就显得很有意义。这篇文章就讲对时钟的理解和运用。

我就以如下的时钟结构图来讲解:

时钟的来源有哪些呢

    从图片的左边可以看出 有内部的高速时钟HSI、低速时钟LSI,外部的高速时钟HSE、低速时钟LSE。

那时钟就8MHZ,如何得到48MHZ或者更高呢:

    如图片中的框1中所示,这个时候就需要倍频,就是通过PLL(锁相环)电路进行以倍数的进行放大频率,具体的实现过程就不加描述了,有兴趣的可以搜索了解。

系统的频率有哪些呢:

    如图片中的框2中所示,系统的频率有倍频后的频率、HSI、HSE、LSI、LSE五个来源,一次只能选择一种,通过寄存器来选择,需要哪种就跟需求有关。

各个时钟的主要作用是什么呢:

    系统时钟Fsys:CPU的工作、外围电路的工作

    内部高速时钟HSI:CPU的工作、外围电路的工作

    外部高速时钟HSE:CPU的工作、外围电路的工作

    内部低速时钟LSI:实时时钟RTC的工作、看门狗时钟WTC的工作

    外部低速时钟LSE:实时时钟RTC的工作、看门狗时钟WTC的工作

外围时钟可以自定义开启,这样可以起到降低功耗。

时钟频率和指令周期分别是什么呢:

    时钟频率是最基本的,是系统运行的频率Fsys,可用于定时器等等的工作。

    指令周期是一条指令运行时间,有1T的(即1个指令周期等于1个时钟周期)、3T的(即1个指令周期等于3个时钟周期)、4T的等等,这就跟MCU采用的什么构架有关,有哈弗构架、冯诺依曼构架等。

要延时n毫秒该如何计算呢:

    1.使用delay来延时,运行时钟8M,4T构架,若延时1ms,则一条指令周期为0.5us,需要2000条指令,如下面程序所示,为delay 1ms函数

void delay_1ms()

{

    short count = 249; //2条指令周期

    while(count-- > 0) //7条指令周期

    {

        nop();//nop为一条指令周期

    }

}

    2.使用定制器延时,运行时钟8M,4T构架,若延时1ms,则一个时钟周期为0.125us,需要8000个时钟。由于不同MCU配置不同,所以以下面的流程来看定时1ms的配置

void delay_1ms()

{

    //初始化寄存器

    //将定时的寄存器设置为8000

    //使能中断配置

    //使能定时器

}

定时器中断触发,则时间达到1ms

请用你发财的小手点个关注点个赞呗~~~~~~~~~~~~~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值