你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F030的 APB1 和APB2时钟  

[复制链接]
改变世界的电子 提问时间:2016-6-30 11:27 /
在做项目设计中,对STM32F030设计,使用TIM3和TIM15,这两个定时器,同样的分频配置,同样的初值设定,为什么中断溢出的时间会不一样的?
TIM3是挂载在APB1上面,TIM15是挂载在APB2上面,求一个完整的答复
收藏 2 评论55 发布时间:2016-6-30 11:27

举报

55个回答
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
   ..................

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

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就可以了,通用和高级定时器要设置的参数会更多),得到自己想要的中断时间。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

maweidong18596 回答时间:2016-7-4 08:25:27
我不知道 ,我要帮你顶起来,一起学习!
小韭菜 回答时间: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。
新建位图图像 (2).jpg

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

黑夜之狼 回答时间:2016-7-4 09:07:36
差多少了?时钟频率一样吗?会不会是中断优先级的问题?
yanlinwei 回答时间:2016-7-4 16:20:19
应该是两条总线频率不同导致的,希望楼主解决后分享一下经验
huaiqiao 回答时间:2016-7-4 21:11:08
1、这个您理解的话,要结合时钟树来理解;
2、您应该用到了中断吧。中断分组,中断优先级也会使得两个定时器进入中断的时间不一样哦。
3、还有溢出时间是有专门的计算公式来计算的。如果您觉得这个也是没有差别的话,用示波器比较也是一种方法。再或者打断点,用示波器看波形也可以啊。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

改变世界的电子 回答时间:2016-7-8 17:45:56
楼主来了,表示采集不到任何重要的信息,问题还没有解决
改变世界的电子 回答时间:2016-7-8 17:48:25
Dylan疾风闪电 发表于 2016-7-4 08:42
回答:APB1和APB2的时钟频率不一样。
具体F030看一下时钟树,貌似M0的是AHB 、APB。具体库中的APB1和APB2是 ...

那HCLK时钟是如何定义的????
改变世界的电子 回答时间:2016-7-8 17:50:32
黑夜之狼 发表于 2016-7-4 09:07
差多少了?时钟频率一样吗?会不会是中断优先级的问题?

我是用16M的晶振,二分频,然后二倍频,最终系统的时钟为16M,然而APB1的时钟是16M正常,而APB2的时钟也就只有8M,根据挂载在这两个总线上的TIM3和TIM15的定时器,完全相同的配置,最终得出的结果不一样而做出的结论
改变世界的电子 回答时间:2016-7-8 17:50:58
lzts 发表于 2016-7-4 10:25
时钟初始化函数里面有定义的呀, 2条总线频率不一样的
void RCC_config() //如果外部晶振为8M,PLLCLK=SYSCL ...

你这个库函数是STM32F030的吗?为什么对应的库函数没有找到的?
改变世界的电子 回答时间:2016-7-8 17:51:33
yanlinwei 发表于 2016-7-4 16:20
应该是两条总线频率不同导致的,希望楼主解决后分享一下经验

问题尚未搞定,还需要考察
改变世界的电子 回答时间:2016-7-8 17:51:58
huaiqiao 发表于 2016-7-4 21:11
1、这个您理解的话,要结合时钟树来理解;
2、您应该用到了中断吧。中断分组,中断优先级也会使得两个定时 ...

波形和预期的结果一样,
1234下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版