固件库函数对定时器外设的驱动放在了stm32f4xx_tim.c文件与对应的stm32f4xx_tim.h文件中。这两个文件中建立了四个初始化结构体,而基本定时器Tim6与Tim7只用到其中一个,即TIM_TimeBaseInitTypeDef。该结构体成员用于设置定时器基本工作参数,并由定时器基本初始化配置函数TIM_TimeBaseInit()调用。这些设定参数将会设置定时器相应的寄存器,以达到配置定时器工作环境的目的。
stm32f4xx_tim.h中的TIM_TimeBaseInitTypeDef结构体如图6-15所示。
图6-15 TIM_TimeBaseInitTypeDef结构体
结构体成员具体含义如下:
(1)TIM_Prescaler:定时器预分频器设置,总线时钟源经该预分频器分频之后,才是定时器时钟,它设定TIMx_PSC寄存器的值。可设置范围为0~65535,实现1~65536分频。
(2)TIM_CounterMode:定时器计数方式,可以设置为向上计数、向下计数以及中心对齐三种模式。基本定时器Tim6与Tim7只能向上计数,无须初始化。
(3)TIM_Period:定时器自动重载寄存器的值,即上溢值。设置范围为0~65535。
(4)TIM_ClockDivision:时钟分频,设置定时器时钟CK_INT频率与数字滤波器采样时钟频率分频比。基本定时器Tim6与Tim7没有此功能,不用设置。(www.xing528.com)
(5)TIM_RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位。利用它可以非常容易地控制输出脉冲的个数。Tim6与Tim7不需要设置。
从这5个成员可以看出,基本定时器Tim6与Tim7只需设置预分频TIM_Prescaler与重载周期值TIM_Period即可,其他无须设置,使用默认值即可。
另一个Tim初始化函数TIM_TimeBaseInit()可以在stm32f4xx_tim.c文件中找到,如图6-16所示。由于代码较长,固件库已经封装好,使用者无须关心具体操作,只需了解如何传递参数即可,所以这里就不讨论具体代码的实现了,有兴趣的读者可以自己阅读。
图6-16 TIM_TimeBaseInit()函数说明
第一个形参TIMx的x代表定时器编号。如果使用Tim6,填入参数TIM6;如果使用Tim14,则填入参数TIM14。
第二个形参TIM_TimeBaseInitStruct结构体就是我们要对定时器进行设置的5个参数的结构体。使用函数TIM_TimeBaseInit()前必须先定义TIM_TimeBaseInitStruct结构体并赋值设置。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。