STM32学习--定时器(通用定时器)2

5. 输出模式

5.1 比较输出

STM32学习--定时器(通用定时器)2_第1张图片

5.1.1 原理

  如图所示,输出理解时注意两种信号OCxREF和OCx,OCx是直接连到端口的信号,OCxREF是输出控制的输出信号。一般在参考手册中大多数讲OCxREF。OCx与OCxREF可由CCxP控制是否反向,由CCxE控制信号输出。
  比较输出功能:①输出一个波形②指示一段给定时间已到。
它的原理是通过计数器的值CNT与各通道CCRx值进行对比,当CNT与CCRx值相等时产生一个比较事件,从而实现中断处理、DMA或OCxREF输出等等。
在其使用时主要考虑三个部分:①端口映射②时基选择③ 输出配置。

  输出比较模式:由OC1M[2:0]控制,其可以分为4种类型:
  ①冻结:就是CNT与CCRx比较结果对于OCxREF无影响;
  ②CNT与CCRx比较结果相同时,强制OCxREF为高或低或者翻转;
  ③强制OCxREF为高或低;
  ④PWM两种模式。

5.1.2 配置方式

  ①配置输出通道,配置IO口(使能时钟、输入、复用功能、复用时钟、重映射到TIM功能);
  ②设置定时器的时基,开启定时器时钟,配置计数模式、分频器系数(PSC)及重载值(ARR)、CCR值;
  ③使能预装载寄存;
  ④根据需求打开中断\DMA,编写中断函数;
  ⑤设置OCxREF与OCx的关系,打开输出;
  ⑥启动计数器,根据需要打开中断。
  在输出比较模式下,更新事件UEV对OCxREF和OCx输出没有影响。

5.2 PWM输出

  PWM输出是一种特殊的比较输出,使用比较输出也可以实现PWM输出但需要使用中断方式占用系统资源,而使用PWM模式可以不需要CPU参与,提高系统效率。

5.2.1原理

  在PWM模式下, TIMx_CNT和TIMx_CCRx始终在进行比较, (依据计数器的计数方向)以确定是否符合TIMx_CCRx≤TIMx_CNT 或者TIMx_CNT≤TIMx_CCRx 。然而为了与OCREF_CLR的功能(在下一个PWM周期之前, ETR信号上的一个外部事件能够清除OCxREF) 一致, OCxREF信号只能在下述条件下产生:① 当比较的结果改变,或②当输出比较模式(TIMx_CCMRx寄存器中的OCxM位)从“冻结” (无比较, OCxM=’000’)切换到某个PWM模式(OCxM=’110’或’111’)。
  CMS位的状态,定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号。
  边沿对齐:
  当向上计数时:PWM模式1时
  当TIMx_CNT小于TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果CCRx中的比较值大于ARR,则OCxREF保持为’1’。如果比较值为0,则OCxREF保持为’0’。
向下计数时:PWM模式1时
  当 TIMx_CNT大于TIMx_CCRx 时 参 考 信 号 OCxREF 为 低 , 否 则 为 高 。 如 果CCRx中的比较值大于ARR中的自动重装载值,则OCxREF保持为’1’。该模式下不能产生0%的PWM波形。
  中央对齐:
  根据不同的CMS位设置,比较标志可以在计数器向上计数时被置’1’、在计数器向下计数时被置’1’、或在计数器向上和向下计数时被置’1’。 TIMx_CR1寄存器中的计数方向位(DIR)由硬件更新,不用软件修改它。
  PWM模式1时,在中央对齐模式1时
  CCRx大于ARR时:向上,CNT 小于CCRx-1进OCxREF为高,CNT 高于CCRx-1时OCxREF为低,CNT计数到ARR后向下计数此过程OCxREF保持为低,计到CCRx-1时OCxREF转为高。
  在使用PWM模式时,必须使能CCRx和ARR预装寄存器。

5.2.2 配置方式

  ①配置输出通道,配置IO口(使能时钟、输入、复用功能、复用时钟、重映射到TIM功能);
  ②设置定时器的时基,开启定时器时钟,配置计数模式、分频器系数(PSC)及重载值(ARR)、CCR值;
  ④设置输出模式(PWM模式1、2两种模式只是输出电平相反)、通道;
  ⑤使能TIMx在CCR2上的预装载寄存器和ARR预装载寄存器;
  ⑥使能TIMx外设;
  ⑦根据需求打开中断\DMA,编写中断函数。

你可能感兴趣的:(STM32,学习)