1, 什么是定时器?
定时器其实就是一个计数器, 是 MCU 不可或缺的重要内部资源, 在很多场合中都要用到定时器, 可以说通过定时器功能的强大与否就很大程度上决定了芯片的性能. 定时器有两种工作模式, 即定时模式, 计数模式, 但实质上都是对脉冲信号进行计数.
--》STM32 的通用 TIMx (TIM2,TIM3,TIM4 和 TIM5 等)定时器功能特点包括:
-->16 /32 位向上, 向下, 向上 / 向下 (中心对齐) 计数模式, 自动装载计数器(TIMx_CNT).
-->16 位可编程 (可以实时修改) 预分频器(TIMx_PSC), 计数器时钟频率的分频系数 为 1~65535 之间的任意数值.
-->4 个独立通道(TIMx_CH1~4), 这些通道可以用来作为:
1 -->输入捕获
2 -->输出比较
3 -->PWM 生成(边缘或中间对齐模式)
4-->单脉冲模式输出
-->可使用外部信号 (TIMx_ETR) 控制定时器和定时器互连 (可以用 1 个定时器控制另外一个定时器) 的同步电路.
--》如下事件发生时产生中断 / DMA(6 个独立的 IRQ/DMA 请求生成器):
-->更新: 计数器向上溢出 / 向下溢出, 计数器初始化(通过软件或者内部 / 外部触发)
-->触发事件(计数器启动, 停止, 初始化或者由内部 / 外部触发计数)
-->输入捕获
-->输出比较
-->支持针对定位的增量 (正交) 编码器和霍尔传感器电路
-->触发输入作为外部时钟或者按周期的电流管理
--》STM32 的通用定时器可以被用于: 测量输入信号的脉冲长度 (输入捕获) 或者产生输出波形 (输出比较和 PWM) 等.
--》使用定时器预分频器和 RCC 时钟控制器预分频器, 脉冲长度和波形周期可以在几个微秒到几个毫秒间调整. STM32 的每个通用定时器都是完全独立的, 没有互相共享的任何资源.
2, 技术器模式
--》向上计数模式: 计数器从 0 计数到自动加载值(TIMx_ARR), 然后重新从 0 开始计数并且产生一个计数器溢出事件.
--》向下计数模式: 计数器从自动装入的值 (TIMx_ARR) 开始向下计数到 0, 然后从自动装入的值重新开始, 并产生一个计数器向下溢出事件.
--》中央对齐模式(向上 / 向下计数): 计数器从 0 开始计数到自动装入的值 - 1, 产生一个计数器溢出事件, 然后向下计数到 1 并且产生一个计数器溢出事件; 然后再从 0 开始重新计数.
3, 通用定时器 (TI2,3,4,5) 工作过程:
来源: http://www.bubuko.com/infodetail-2971642.html