STM32F030的APB1和APB2时钟中断溢出时间不一样

2019-07-14 14:20发布

在做项目设计中,对STM32F030设计,使用tiM3和TIM15,这两个定时器,同样的分频配置,同样的初值设定,为什么中断溢出的时间会不一样的?
TIM3是挂载在APB1上面,TIM15是挂载在APB2上面,求一个完整的答复
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
vevrwerwr
1楼-- · 2019-07-15 16:26
讲道理!
既然你已经确定了 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就可以了,通用和高级定时器要设置的参数会更多),得到自己想要的中断时间。
60user132
2楼-- · 2019-07-15 20:02
楼主来了,表示采集不到任何重要的信息,问题还没有解决
60user132
3楼-- · 2019-07-15 20:47
 精彩回答 2  元偷偷看……
60user132
4楼-- · 2019-07-15 22:52
q510954672 发表于 2019-1-29 11:40
差多少了?时钟频率一样吗?会不会是中断优先级的问题?

我是用16M的晶振,二分频,然后二倍频,最终系统的时钟为16M,然而APB1的时钟是16M正常,而APB2的时钟也就只有8M,根据挂载在这两个总线上的TIM3和TIM15的定时器,完全相同的配置,最终得出的结果不一样而做出的结论
60user132
5楼-- · 2019-07-15 23:01
hongliwei 发表于 2019-1-29 11:46
时钟初始化函数里面有定义的呀, 2条总线频率不一样的
void RCC_config() //如果外部晶振为8M,PLLCLK=SYSCLK=72M,HCLK=72M,//P2CLK=72M,P1CLK=36M,ADCCLK=36M,USBCLK=48M,TIMCLK=72M
{

你这个库函数是STM32F030的吗?为什么对应的库函数没有找到的?
60user132
6楼-- · 2019-07-16 04:14
handsomelchcpp 发表于 2019-1-29 11:57
应该是两条总线频率不同导致的,希望楼主解决后分享一下经验

问题尚未搞定,还需要考察

一周热门 更多>