关于STM32/GD32的APB1总线上TIMER时钟速度为72Mhz而不是36Mhz的原因

在给GD32配置定时器做软定时器时遇到定时器时钟速度的疑问

在调试中可以通过以下代码知道各个总线的时钟速度

RCC_ClocksTypeDef Rcc_Clock;
RCC_GetClocksFreq(&Rcc_Clock);

调试图
其中

名称解释
SYSCLK_Frequency系统时钟
HCLK_Frequency时钟树中连接SYSCLK,AHB
PCLK1_FrequencyAPB1
PCLK2_FrequencyAPB2
ADCCLK_FrequencyADC

在下图中可以看到APB1最大速度为54Mhz,STM32的为36Mhz(图在最后),为AHB的一半。为什么配置定时器时APB1的定时器时钟速度为72Mhz呢?在标准库函数中系统时钟初始化时
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
也就是对AHB时钟总线除以了2,也就是36Mhz。在GD32手册第79页(GD32F103中文手册)标注了如下图表示。分频系数不为1,我们使用了2,所以APB1_TIMER的时钟速度×2。
GD32手册标注
所以APB1的定时器时钟要乘2。STM32的框图与GD32的大致相同,(APB1 prescale = 1) × 1 else × 2。那么就是72Mhz了。
时钟树
STM32中文手册截取
STM32时钟树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值