文章目录
- 前言
- 一、TIM 简介
- 二、 基本定时器
- 三、基本定时器功能框图
-
- 1.时钟源
- 2.控制器
- 3.计数器
- 4.定时器周期计算
- 四、定时器初始化结构体详解
前言
定时器 (Timer) 最基本的功能就是定时了,比如定时发送 USART 数据、定时采集 AD 数据等等。如果把定时器与 GPIO 结合起来使用的话可以实现非常丰富的功能,可以测量输入信号的脉冲宽度,可以生产输出波形。定时器生产 PWM 控制电机状态是工业控制普遍方法,这方面知识非常有必要深入了解
一、TIM 简介
STM32F42xxx 系列控制器有 2 个高级控制定时器、 10 个通用定时器和 2 个基本定时器,还有 2个看门狗定时器。看门狗定时器不在本章讨论范围,有专门讲解的章节。控制器上所有定时器都是彼此独立的,不共享任何资源。各个定时器特性参考表各个定时器特性


二、 基本定时器
基本定时器主要两个功能:
- 第一就是基本定时功能,生成时基;
- 第二就是专门用于驱动数模转换器 (DAC)。
控制器有两个基本定时器 TIM6 和 TIM7,功能完全一样,但所用资源彼此都完全独立,可以同时使用。 

三、基本定时器功能框图

1.时钟源
- 基本定时器:只能来自时钟内部
- 高级控制定时器:可选外部时钟或其他定时器
可以根据前面所讲进行配置寄存器(RCC_DCKCFGR)的TIMPRE位来设置定时器的时钟频率,一般设置该位为0,即TIMx_CLK = 总线时钟 * 2,最大定时器时钟为84Mhz。 
2.控制器
定时器控制器实现功能:
- 控制定时器复位,使能,计数等基础功能
- DAC转换触发
3.计数器


4.定时器周期计算
如果需要1s周期的定时器:
主要对TIMx_PSC 和 TIMx_ARR 两个寄存器值决定
1.先设置TIMx_ARR == 9999
CNT从0开始计算需要10000次,如果时钟源为100微秒即可满足,就是CNT = 100微秒
2.设置预分频器值为TIMx_PSC == (8400 – 1)
因为TIMx_PSC = 84Mhz,所以设置为8400
四、定时器初始化结构体详解
typedef struct
{
uint16_t TIM_Prescaler; /*预分频器 */
uint16_t TIM_CounterMode; /*计数模式 */
uint32_t TIM_Period; /*定时器周期 */
uint16_t TIM_ClockDivision; /*时钟分频 */
uint8_t TIM_RepetitionCounter; /*重复计算器 */
} TIM_TimeBaseInitTypeDef;

