(1)TIM3时钟使能
通过APB1ENR的第1位来设置TIM3的时钟,因为在Stm32_Clock_Init函数里面把APB1的分频设置为2了,所以TIM3时钟就是APB1时钟的2倍,等于系统时钟(72 MHz)。
(2)设置TIM3_ARR和TIM3_PSC的值
通过这两个寄存器,设置自动重装的值及分频系数。这两个参数加上时钟频率就决定了定时器的溢出时间。
定时器的工作频率计算公式为:
其中CK_CNT表示定时器工作频率;TIMx_PSC表示分频系数。
例如通用定时器的时钟为72 MHz,分频比为7 199,如果想要得到一个1 s的定时,定时计数器的值需要设定为
因为720 00 000/7 200=10 kHz
时钟周期T=1/10 kHz=100 μs
100 μs×10 000=1 s
结论:分频比为7 199的定时计数器的值10 000。
(3)设置TIM3_DIER允许更新中断
因为要使用TIM3的更新中断,所以设置DIER的UIE位,并使能触发中断。
(4)允许TIM3工作
在配置完后要开启定时器,通过TIM3_CR1的CEN位来设置。(www.xing528.com)
(5)TIM3中断分组设置
在定时器配置完成之后,因为要产生中断,必不可少地要设置NVIC相关寄存器,以使能TIM3中断。
(6)编写中断服务函数
编写定时器中断服务函数,通过该函数处理定时器产生的相关中断。中断产生后,通过状态寄存器的值来判断此次产生的中断属于什么类型,然后执行相关的操作。
2)定时器程序设计
以TIM3定时器的工作频率10 kHz为例:
寄存器的设置参见图6.40的寄存器定义。
图6.40 定时器编程的相关寄存器介绍
上面已对TIM3编程,0.5 s产生一次中断。
若要编写中断程序,需要对TIM3进行中断设置,参见中断一节。中断设置好后,可编写定时器中断服务程序:
清除中断标志需要对定时器的状态寄存器进行操作。定时器状态寄存器定义如图6.41所示。
图6.41 定时器状态寄存器(TIMx_SR)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。