引言
苦苦一顿搬运后发现
又是719,又是19999.感觉自己的天都要塌了!
到这里我只想说如果你不会使用STM32的定时器与中断,你的STM32就和一块电源一样!没有任何灵活性与特殊性。
TIMER
PSC
当单片机开始计时总线上的72MHZ脉冲就会进入预分频器进行分频 然后为我们的TIMx时钟提供一个相应频率的脉冲。
解释:72MHZ指的是1s会产生72 000 000个脉冲信号。
如果我们的分频因数为719(PSC=719)我们就会进行72MHZ/(719+1)=100KHZ
这样我们会有一个一个频率为100KHZ的脉冲进入我们的时钟TIMx。(1s可以产生100 000个脉冲)
CNT
我们使用的是TIM6(基本定时器只能上升沿触发!)
一个脉冲来到包含一个上升沿,这样我们的CNT计数定时器就会+1。
ARR
那数到到少会停止呢!就需要靠我们的ARR(重载计时器)。ARR=19999,指的是(19999+1=20000)20000个脉冲为一组周期,当我们数到20000个脉冲时-》我们CNT反转成为0!产生一个中断(IT=1)。.
1s产生100 000个周期。那20 000个周期代表0.2s!!!!这样子我们就实现了每隔0.2s计数一次!!!
范围注意
注意:我们的PSC,ARR,CNT都为16个2进制数,所以它们的最大取值是【 】=65535。所以我们在使用时注意范围哦!
代码使用
我们先看tim固件库
我们直接初始化!
我们先打开TIM6的定时器在进行 两次初始化。一次是将定时器的值全部设为默认值!另一次是将我们设定的预分频系数,定时器模式,ARR写入TIM6时钟内!最后使能TIM6的定时器!!!
打开表示可以使用,但是要开始计数我们需要使能计时器!!!
不信的话看看我们的Cmd函数,我们将CR1(控制寄存器)的最低位(CEN使能位)置为一(打开计时器)
怎么使用是后话,我们先学到这里吧!