系统定时器:
系统定时器(SysTick系统)是属于CM3内核,内嵌在NVIC中。
系统定时器:是一个24bit的向下递减的计数器,计数器每计数一次的时间为
1 / SYSCLK(时钟频率),一般我们设置系统时钟SYSCLK(与AHB相同)等于72M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。寄存器:
**CTRL:**SysTick控制和状态寄存器

**LOAD:**SysTick重装载寄存器

**VAL:**SysTick当前数值寄存器

**CALIB:**SysTick 校准数值寄存器。很少用到
基本定时器:
基本定时器:TIM6和TIM7,各包含一个
16位自动装载计数器,由各自的可编程预分频器驱动。这2个定时器是互相独立的,不共享任何资源。
这个2个基本定时器只能向上计数,由于没有外部IO,所以只能计时,不能对外部脉冲进行计数。
功能:定时中断,主模式,触发DAC。
基本定时器只能向上计数,从
0开始自增,自增到自动重装载寄存器的值时,下一个时钟上升沿到来后,计数器产生溢出,从0重新计数,并产生更新事件(UEV),如果开启中断,也会产生更新中断寄存器:
- CR1:控制寄存器1
 - CR2:控制寄存器2
 - DIER:中断使能寄存器
 - SR:状态寄存器
 - EGR:事件产生寄存器
 - CNT:计数器
 - PSC:预分频寄存器
 - ARR:自动重装载寄存器
 
配置流程:
- 开启时钟 TIM6
 - 配置 TIM6 PSC、 CNT、 ARR
 - 更新中断
 - 使能
 - 基本定时器和滴答定时器功能基本一致,
 - 我们经常使用 TIM6、 TIM7、 SysTick 当做时间基准
 
通用定时器:
通用定时器有4个分别是:TIM2、TIM3、TIM4、TIM5
功能:
- 多种时钟源。(内外)
 - 向上计数(加),向下计数(减),向上/向下(先加后减)。当然我们使用的时候更喜欢向上计数。
 - 输入捕获。
 - 输出比较。
 - PWM生成。
 - 支持针对定位的增量(正交)编码器和霍尔传感器电路。
 
通用定时器是一个通过可编程预分频器驱动的
16位自动装载计数器构成。它适用于多种场合,包括:- 输入捕获: 测量输入信号的脉冲长度(输入捕获)、按键时间检测、红外的解调
 - 输出比较: 产生输出波形(输出比较和 PWM)、控制电机、红外发送
 
每个定时器都是完全独立的,没有互相共享任何资源。
计数模式: 向上计数、向下计数、中央对齐计数4 个独立通道:
每个通道都可以进行输入捕获和输出比较
PWM:脉冲宽度调制,简单来说就是通过调解高电平时间占比(占空比),模拟不同电压/功率来实现不同的效果

占空比:高电平宽度除以周期
输出比较 PWM :
配置流程情况1:LED (外设)上连接了有 TIM 功能的引脚

 1、 开启时钟 GPIOB、 TIM4
 2、 模式: 复用推挽输出
 3、 基本定时器的配置: PSC、 ARR、 CNT
 4、 输出比较功能配置: CCMR、 CCR、 CCER、 DIER
 5、 使能
情况 2: LED (外设)上连接了没有 TIM 功能的引脚、并且不能映射

 1、 开启时钟 GPIOE、 TIM4
 2、 模式: 通用推挽输出
 3、 基本定时器的配置: PSC、 ARR、 CNT
 4、 输出比较功能配置: CCMR、 CCR、 CCER、 DIER,注意 OCx 不输出到对应引脚
 5、 使能
情况 3: LED 上连接了有 TIM 功能的引脚,但是这个功能在 Remap 上

 1、 开启时钟 TIM3、 AFIO、 GPIOB
 2、 关闭 JTAG 功能,打开 SWD 功能,映射 TIM3_CH1 到 PB4 上

 3、 模式: 复用推挽输出
 4、 基本定时器的配置: PSC、 ARR、 CNT
 5、 输出比较功能配置: CCMR、 CCR、 CCER、 DIER
 6、 使能
输入捕获:
- 输入捕获作用:此功能可以捕获输入通道上信号的上升沿或下降沿
 - 多用于测量
PWM的周期/频率,只要测量出连续的两个上升沿或连续的两个下降沿的时间间隔。 - 也可以测量
占空比,只要测量出连续的一个上升沿和一个下降沿的时间间隔,然后除以周期即可。 - 测量PWM周期频率用到的寄存器详解:
- **输入通道滤波器设置:**配置CH1的输入滤波器,可以过滤掉一些干扰信号(CCMR)
 - *通道输入信号边缘检测*和捕获使能:**设置边沿检测器 0上升沿 1下降沿,使能CH1通道捕获使能 0: 关闭 1:开启(CCER)
 - 捕获比较中断: 开启捕获比较中断,在中断服务函数中对捕获到的上升沿进行处理(DIER)
 - 输入模式:(CCMR)
 
 
高级定时器:
- 高级定时器有2个分别是:TIM1、TIM8。
 - 高级定时器除了拥有通用定时器的所有功能外,还具有以下功能:
- 死区时间可编程的互补输出
- 死区时间:延时一段时间再开通。
 - 互补输出:
- 高级定时器的通道1/2/3可以分别输出2路互补信号:
CH1和CH1N(注意通道4没有) - 互补信号:频率周期相等,相位相差180°。
 - 互补输出一般用于驱动H桥电路,H桥通常用于驱动电流较大的负载,比如电机。
 
 - 高级定时器的通道1/2/3可以分别输出2路互补信号:
 
 - 断路输入信号(刹车输入信号)
- 简单理解:外部来了一个信号(上升沿或下降沿),检测到之后立刻把所有的输出都关闭,然后后面输出无效电平或空闲电平(看具体配置)
 
 - 重复计数器
- 在基本定时器和通用定时器中,计数器每溢出1次,就产生一次更新事件,而在高级定时器中,计数器每溢出
1次,会产生一个信号,让重复计数器的值减1,当重复计数器的值减到0,如果计数器再溢出1次,则会产生更新事件。 - 重复计数器的初始化来源于RCR寄存器
REP位。如果REP=2则CNT计数器溢出3次产生一次更新事件。可以用重复计数器生成有限个周期的PWM 
 - 在基本定时器和通用定时器中,计数器每溢出1次,就产生一次更新事件,而在高级定时器中,计数器每溢出
 
 - 死区时间可编程的互补输出