改变世界的电子 发表于 2016-6-30 11:27:13

关于STM32F030的 APB1 和APB2时钟

在做项目设计中,对STM32F030设计,使用TIM3和TIM15,这两个定时器,同样的分频配置,同样的初值设定,为什么中断溢出的时间会不一样的?
TIM3是挂载在APB1上面,TIM15是挂载在APB2上面,求一个完整的答复

lzts 发表于 2016-7-4 10:25:50

时钟初始化函数里面有定义的呀, 2条总线频率不一样的
void RCC_config() //如果外部晶振为8M,PLLCLK=SYSCLK=72M,HCLK=72M,//P2CLK=72M,P1CLK=36M,ADCCLK=36M,USBCLK=48M,TIMCLK=72M
{
    .................
    RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB不分频,HCLK=SYSCLK
    RCC_PCLK2Config(RCC_HCLK_Div1);//设置APB2不分频,P2CLK=HCLK =72MHz
    RCC_PCLK1Config(RCC_HCLK_Div2); //设置APB1 为2分频,P1CLK=HCLK/2=72/2=36MHz
   ..................

maweidong18596 发表于 2016-7-4 08:25:27

我不知道 ,我要帮你顶起来,一起学习!

wuxin999 发表于 2016-7-4 08:40:04

是不是这两个总线的时钟不一样

Dylan疾风闪电 发表于 2016-7-4 08:42:16

本帖最后由 Dylan疾风闪电 于 2016-7-4 09:11 编辑

回答:APB1和APB2的时钟频率不一样。
具体F030看一下时钟树,貌似M0的是AHB 、APB。具体库中的APB1和APB2是怎么定义的,还要查证一下。----------------------------------------------------------------------------------------------------------------------------------
从官方例程中的描述来看 PAB2源自HCLK。


黑夜之狼 发表于 2016-7-4 09:07:36

差多少了?时钟频率一样吗?会不会是中断优先级的问题?

yanlinwei 发表于 2016-7-4 16:20:19

应该是两条总线频率不同导致的,希望楼主解决后分享一下经验

huaiqiao 发表于 2016-7-4 21:11:08

1、这个您理解的话,要结合时钟树来理解;
2、您应该用到了中断吧。中断分组,中断优先级也会使得两个定时器进入中断的时间不一样哦。
3、还有溢出时间是有专门的计算公式来计算的。如果您觉得这个也是没有差别的话,用示波器比较也是一种方法。再或者打断点,用示波器看波形也可以啊。

ppaaddss 发表于 2016-7-5 08:09:52

讲道理!
既然你已经确定了 2两个挂载不同的APB上,那就去看APB上到底分配了多少频率
一般APB1和APB2上的时钟都是
系统时钟经过 AHB Prescaler 分频得到 HCLK
HCLK 经过APB1 Prescaler 得到APB1时钟,而总线下TIMER的时钟源为APB1的2倍
HCLK 经过APB2 Prescaler 得到APB2时钟,而总线下TIMER的时钟源为APB2的2倍
所以,要确定APB1和APB2的频率是否一样,只要确定APB1 Prescaler和APB2 Prescaler 是否一样就对了
然后再通过预分频和计数器(基本定时器设置这2就可以了,通用和高级定时器要设置的参数会更多),得到自己想要的中断时间。

改变世界的电子 发表于 2016-7-8 17:45:56

楼主来了,表示采集不到任何重要的信息,问题还没有解决
页: [1] 2 3 4 5 6
查看完整版本: 关于STM32F030的 APB1 和APB2时钟