一、IC和OC
可以看到:定时器除了基本的定时中断功能,输入捕获、输出比较均是STM32定时器的功能
输入捕获IC(Input Capture)
输入捕获是一种用于测量外部信号脉冲宽度或频率的技术。它通过定时器模块捕获外部信号的特定事件(如脉冲的上升沿或下降沿),以便测量脉冲宽度、频率或其他相关参数。在STM32中,除了基本定时器TIM6和TIM7外,其他定时器通常都具有输入捕获功能。输入捕获常用于测量传感器输出、编码器信号、PWM输入信号等。
输出比较OC(Output Compare)
输出比较是通过比较定时器的计数器值与捕获/比较寄存器(CCR)的值,来操作输出电平的一种技术。它可以用来生成一定频率和占空比的PWM波形,实现对外部电路的控制。每个高级定时器和通用定时器在STM32中都拥有多个输出比较通道,这些通道可以独立配置,以生成不同的PWM波形。
捕获/比较寄存器,这个寄存器是输出比较和输入捕获共用的,两种功能在同一时刻只能选择一种执行。先将其用作输出比较来看,输出比较最重要的一个功能就是产生PWM波。也可以看到,通用计时器有四个输出比较通道:OC1~4
其中OC1的内部输出部分如下:
输出比较模式(TIMx_CCMRx寄存器中的OCxM位)和输出极性(TIMx_CCER寄存器中的 CCxP位)
在判断计数器CNT和捕获/比较寄存器CCR(capture /compare register)的值并确认输出模式后输出一个OC1REF(OC1 Reference),它指的是与输出比较通道1(OC1)相关联的参考信号或电平状态。
它有两条之路可走,一条是进入主模式控制器就能够作为触发输出TRGO输出给其他定时器或者DA/DC转换;另一条是进入极性选择器TIMx_CCER,极性选择器置0则信号走上一路不做变换直接输出到输出使能电路,如果置1则让它走下支路可以使信号oc1ref经过一个非门电路将其反转,高变低,低变高。所以,oc1ref的电平状态不仅取决与CNT和CCR的比较,还取决于我们选取怎么样的输出模式
其中输出模式总共有以下几种:
这里细心一点就会发现:PWM模式1和模式2是完全相反的,也就是说,在两种不同模式下,oc1ref在经过选择器时,一个模式ref照常输出,一个模式ref取反。模式1和模式2正好互补,互为相反,所以在运用起来差别也并不太大。这里用的最多的就是PWM模式1。
而从计数模式上来看,PWM也和TIMx在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式,关于3种模式的具体资料,可以查看《STM32参考手册》的“14.3.9 PWM模式”一节。
二、PWM输出
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。
STM32的定时器除了基本定时器TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。