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

关于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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版