1、STM32单片机(one-board computer)定时器简介
定时器,顾名思义,就是用来定时的器件,可以设置定时的时间,到了时间执行操作或者触发通知等,对于单片机(one-board computer)和数字电路来说,定时器本质上是根据输入时钟的脉冲进行计数的器件,具体输入时钟的频率是多少、计数的数是多少等这些参数都可以进行设置,这些参数可决定计数器计数的时间。通过定时器的基本计数、计时的功能可延伸出更高级的功能,比如对电机的精确控制、对特定代码执行周期的精确控制、对脉冲时间的测量等,总之只要与时间有关的高级功能,可能都可通过定时器实现,所以说定时器是非常有用的一个单片机(one-board computer)外设。
STM32的定时器分为基本定时器、通用定时器和高级控制定时器,基本定时器只具有计数的功能,通用定时器具有计数的功能、对输入脉冲信号捕获、对输出信号比较、产生PWM(脉宽调制)波形功能、单脉冲模式输出功能,高级控制定时器除了具有通用定时器功能以外还具有死区时间可编程的互补输出功能。
2、STM32单片机(one-board computer)定时器的基本用法
作为定时用时的基本用法流程
3、基本定时器实验
基本需求:1s触发一次定时器中断事件,即计数溢出中断
以STM32F103为例,STMF32F1系列的定时器预分配系数最大为65533,即16位二进制数的最大值,计数周期最大数也是65533,定时器的输入时钟频率最大为总线的时钟频率,可以是单片机(one-board computer)最大的时钟频率72Mhz。
设计定时器初始化参数及例程如下:
采用通用定时器TIM2为例,时钟源为内部时钟,计数模式为向上计数;
定时器时钟源内部总线APB2的预分频器系数为1,时钟频率为64Mhz;
定时器的预分配系数如果是64000的话,那么计1个数据的时长为1/(64000000/64000)=1/1000=0.001s,然后可设置计数周期为1000,则会1s产生一次计数溢出中断;
程序设计逻辑:
main.c里设置一个全局变量,初始化值为0,当TIM2计数器产生溢出中断时,将此全局变量置1,main函数主循环里判断全局变量,如果是1,则输出当前滴答时钟毫秒数,来验证定时器计数和计时是否准确。
程序时钟配置:
TIM2定时器配置:
main主函数代码:
TIM2定时器初始化代码:
TIM2定时器中断代码:
|