1 定时器时钟
-
计数器是从CK_PSC分频器分频后得到CK_CNT,计数器 COUNTER 根据 CK_CNT 频率向上计数; -
ARPE 位置 1,影子寄存器有效,就是影子寄存器的使能端,只有在事件更新时才把 TIMx_ARR 值赋给影子寄存器 -
基本定时器的数据结构 -
RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出 PWM 的个数。 -
定时器的中断配置
高级定时器
高级控制定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车 (断路) 功能,这些功能都是针对工业电机控制方面。
高级控制定时器有四个时钟源可选
? 内部时钟源 CK_INT ? 外部时钟模式 1:外部输入引脚 TIx(x=1,2,3,4) ? 外部时钟模式 2:外部触发输入 ETR ? 内部触发输入
- 内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。主模式的定时器可以对从模式定时器执行复位、启动、停止或提供时钟。高级控制定时器和部分通用定时器 (TIM2 至 TIM5) 可以设置为主模式或从模式,TIM9 和 TIM10 可设置为从模式。
高级控制定时器控制器部分包括 - 触发控制器、
- 从模式控制器
- 编码器接口。
- 触发控制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发 DAC/ADC 转换
- 编码器接口专门针对编码器计数而设计
- 从模式控制器可以控制计数器复位、启动、递增/递减、计数。
时基单元
- PSC
- CNT
- ARR 自动重载寄存器
- REP 重复计数器寄存器 8 位有效
- 如果 ARPE 位置 1,自动重载影子寄存器有效,只有在事件更新时才把 TIMx_ARR 值赋给影子寄存器。如果 ARPE 位为 0,则修改 TIMx_ARR 值马上有效。
三种计数模式
- 递增计数模式
- 递减计数模式
- 递增/递减 (中心对齐) 计数模式
输出比较模式
死区时间的大小具体由 BDTR 寄存器的位 DTG[7:0] 配置
比较输出初始化结构体
typedef struct {
uint32_t OCMode;
uint32_t Pulse;
uint32_t OCPolarity;
uint32_t OCNPolarity;
uint32_t OCFastMode;
uint32_t OCIdleState;
uint32_t OCNIdleState;
}TIM_OCInitTypeDef;
断路和死区初始化结构体
typedef struct {
uint32_t OffStateRunMode;
uint32_t OffStateIDLEMode;
uint32_t LockLevel;
uint32_t DeadTime;
uint32_t BreakState;
uint32_t BreakPolarity;
uint32_t BreakFilter;
uint32_t Break2State;
uint32_t Break2Polarity;
uint32_t Break2Filter;
uint32_t AutomaticOutput;
} TIM_BreakDeadTimeConfigTypeDef;
编码器使用
相关结构体
包含2个输入通道的使用
typedef struct
{
uint32_t EncoderMode;
uint32_t IC1Polarity;
uint32_t IC1Selection;
uint32_t IC1Prescaler;
uint32_t IC1Filter;
uint32_t IC2Polarity;
uint32_t IC2Selection;
uint32_t IC2Prescaler;
uint32_t IC2Filter;
}TIM_Encoder_InitTypeDef;
|