STM32F4定时器初始化的含义

 

最近在弄STM32以太网的时候,看到定时器的中断,发现忘记了一些定时器的内容。
比如STM32F4的初始化定时器,TIM3_Int_Init(5000-1,8400-1);这一句就没有理解了,这个是多久进入一次的定时器中断呢? 赶紧去翻了一下我之前STM32定时器的网页收藏夹。写下这篇文章记录一下。

定时器的参考链接:STM32定时器


先说结论, TIM3_Int_Init(5000-1,8400-1)这一句是0.5s进入一次的中断。正点原子的中断代码,8400是分频系数,5000是预装载值。我们使用的是TIM3.根据时钟树,可以知道TIM3挂载在APB1下,APB1的时钟频率是=42MHZ,但是因为我们分频系数不等于1,所以TIM3的时钟为APB1的频率*2=84MHZ。


计算: 
TIM3的时钟84/8400=0.01M, 
一个时钟周期为1_000_000/10_000=100us 
因为装载值是为5000,所以最后溢出的时间100us*5000=500_000us=0.5s 
最后可得这个程序0.5s进入一次定时器中断。


APB1,APB2时钟的时钟可参考文章 
STM32F4如何设置系统时钟 
得STM32F4的时钟 
HCLK = SYSCLK / 1 = 168MHz ,AHB总线时钟 
PCLK2 = HCLK / 2 = 84MHz 
PCLK1 = HCLK / 4 = 42MHz


关于STM32F4定时器时钟频率问题 
(1)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟; 
(2)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍。

猜你喜欢

转载自blog.csdn.net/qq_38376586/article/details/85637312
今日推荐