STM32的APB时钟预分频数到底是怎么确定的?AHB的频率到底是72MH还是什么是有什么决定的?

2025-01-03 00:32:00
推荐回答(3个)
回答1:

APB1最大频率是36Mhz,这个在初始化的时候就已经设置了的,如果用库函数默认就是36Mhz,在main函数运行前就设置了,一般可以不管。如果自己操作寄存器就不一定了。

然后psc的问题:其实里面有两个分频的概念,APB预分频和计数器时钟频率(CK_PSC)的关系指的是AHB分频得到APB1,一般AHB取最大72Mhz,所以APB1是AHB的2分频,既然不是1分频,所以计数器时钟就是APB1的2倍了。而最终定时器的时钟频率(CK_CNT)是对CK_PSC进行psc值的分频得到的,这个值就是我们用来定时计算的数值。

图中CK_PSC就是从APB1得到的时钟,预分频控制寄存器的值就是PSC里面的值,而CK_CNT就是分频最终得到的值。

回答2:

APB1就是72mh,然后按照psc值对72分频 看时钟树就知道了

回答3:

static void SetSysClockTo72(void)
{
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
}