2019-07-14 14:20发布
q510954672 发表于 2019-1-29 11:40 差多少了?时钟频率一样吗?会不会是中断优先级的问题?
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 {
handsomelchcpp 发表于 2019-1-29 11:57 应该是两条总线频率不同导致的,希望楼主解决后分享一下经验
最多设置5个标签!
既然你已经确定了 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就可以了,通用和高级定时器要设置的参数会更多),得到自己想要的中断时间。
我是用16M的晶振,二分频,然后二倍频,最终系统的时钟为16M,然而APB1的时钟是16M正常,而APB2的时钟也就只有8M,根据挂载在这两个总线上的TIM3和TIM15的定时器,完全相同的配置,最终得出的结果不一样而做出的结论
你这个库函数是STM32F030的吗?为什么对应的库函数没有找到的?
问题尚未搞定,还需要考察
一周热门 更多>