STM32F4定时器初始化的含义
2019-07-29 来源:eefocus
最近在弄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的时钟的两倍。
上一篇:stm32f407通用定时器