通用定时器的时钟为什么也是72MHz

这两天写程序突然发现通用定时器是挂在APB1总线上的,而APB1总线的时钟最大为36MHz,那为什么通用定时器的时钟还是可以是72MHz呢?找了资料,看了原子哥的视频才搞明白。
首先看一张图
在这里插入图片描述
从图中可以清楚地看到通用定时器TIM2~7的时钟是通过AHB、APB1得来的。图中有这么一句话
在这里插入图片描述
这句话的意思就是如果APB1对来自AHB的时钟进行1分频(也就是不分频的话),那么APB1的时钟直接就送给了通用定时器,也就是图中说的x1输出;如果APB1对来自AHB的时钟进行的不是1分频(除1分频以外的其他任何一个分频),那么此时通用定时器得到的时钟就是APB1时钟的两倍,也就是图中说的x2输出,但是此时挂在APB1上的其他外设的时钟并不是APB1的2倍,他们就是APB1对AHB分频之后再经过APB1的分频后的实际值。
再看一张图,可能会更加清晰点。
在这里插入图片描述
图中说的很清楚:除非APB1的分频系数是1,否则通用定时器的时钟等于APB1时钟的两倍,而SystemInit函数在初始化的时候,设置的APB1的分频系数是2分频,那么此时通用定时器的时钟就是APB1时钟的两倍,初始化之后APB1时钟是AHB时钟的2分频,也就是一半36MHz,那么通用定时器的时钟是APB1的两倍,那么通用定时器的时钟就是72MHz,也就是图中的CK_INT(送往通用定时器)的时钟是72MHz,但是CK_CNT(送往挂在APB1上除了通用定时器的其他外设)的时钟仍然是APB1的时钟,也就是36MHz。而F(CK_PSC)的作用就是对挂在APB1上除了通用定时器的其他外设提供对APB1分频之后的时钟。
综上,通用定时器的时钟最大为72MHz,挂在APB1上除了通用定时器的其他外设时钟最大为36MHz。这样设计的目的就是让挂在APB1上的低速外设有合适的低速时钟,同时还可以让挂在APB1上的通用定时器能够在不影响低速外设的情况下仍然有高速的时钟。
这么解释大家应该都很清楚了吧。简单来说,就是同样是挂在APB1总线上,但是通用定时器可以有72MHz的时钟,而其他外设只能有36MHz的时钟,并且还不会互相干扰。
注:系统时钟初始化后,默认AHB是72MHz,APB1是AHB的2分频36MHz,通用定时器时钟是APB1的两倍72MHz。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值