PWM 模式
脉冲宽度调制模式可以生成一个信号,该信号频率由 TIMx_ARR⑩ 寄存器值决定,其占空比由 TIMx_CCRx⑤ 寄存器值决定。
通过向 TIMx_CCMRx 寄存器中的 OCxM⑰ 位写入 110 (PWM 模式 1)或 111 (PWM 模式 2),可以独立选择各通道 (每个 OCx⑲ 输出对应一个 PWM)的 PWM 模式。必须通过将 TIMx_CCMRx 寄存器中的 OCxPE⑫ 位置 1 使能相应预装载寄存器,最后通过将 TIMx_CR1 寄存器中的 ARPE⑮ 位置 1 使能自动重载预装载寄存器(在递增计数或中心对齐模式下)。
由于只有在发生更新事件时预装载寄存器才会传送到影子寄存器,因此启动计数器之前,必须通过将 TIMx_EGR 寄存器中的 UG⑧ 位置 1 来初始化所有寄存器。
OCx⑲ 极性可使用 TIMx_CCER 寄存器的 CCxP⑱ 位来编程。既可以设为高电平有效,也可以设为低电平有效。通过 CCxE、CCxNE、MOE、OSSI 和 OSSR 位(21)(TIMx_CCER 和 TIMx_BDTR 寄存器)的组合使能 OCx⑲ 输出。有关详细信息,请参见 TIMx_CCER 寄存器 说明。
在 PWM 模式(1 或 2)下,TIMx_CNT⑦ 总是与 TIMx_CCRx⑥ 进行比较,以确定是 TIMx_CCRx ≤ TIMx_CNT 还是 TIMx_CNT ≤ TIMx_CCRx(取决于计数器计数方向)。
根据 TIMx_CR1 寄存器中的 CMS② 位状态,定时器能够产生边沿对齐模式或中心对齐模式的 PWM 信号。
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
PWM 边沿对齐模式
● 递增计数配置
当 TIMx_CR1 寄存器中的 DIR① 位为低时执行递增计数。请参见第 332 页的递增计数模 式一节。
以下以 PWM 模式 1 为例。只要 ⑦TIMx_CNT < TIMx_CCRx⑥,PWM 参考信号 OCxREF⑯ 便为高电平,否则为低电平。如果 TIMx_CCRx⑥ 中的比较值大于自动重载值(TIMx_ARR⑨ 中),则 OCxREF⑯ 保持为“1”。如果比较值为 0,则 OCxRef 保持为“0”。图 103 举例 介绍边沿对齐模式的一些 PWM 波形 (⑩TIMx_ARR=8)。
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
● 递减计数配置
当 TIMx_CR1 寄存器中的 DIR① 位为高时执行递减计数。请参见第 335 页的递减计数模式一节。 在 PWM 模式 1 下,只要 ⑦TIMx_CNT > TIMx_CCRx⑥,参考信号 OCxRef⑯ 即为低电平, 否则其为高电平。如果 TIMx_CCRx 中的比较值大于 TIMx_ARR⑩ 中的自动重载值,则 OCxREF⑯ 保持为“1”。此模式下不可能产生 0% 的 PWM 波形。
PWM 中心对齐模式
当 TIMx_CR1 寄存器中的 CMS② 位不为“00”(其余所有配置对 ⑯OCxRef/OCx⑲ 信号具有相同的作用),中心对齐模式生效。根据 CMS② 位的配置,可以在计数器递增计数、递减计数 或同时递增和递减计数时将比较标志置 1。TIMx_CR1 寄存器中的方向位 (DIR)① 由硬件更新,不得通过软件更改。请参见第 337 页的中心对齐模式(递增/递减计数)。
图 104 显示了中心对齐模式的 PWM 波形,在此例中:
● TIMx_ARR=8, ⑩
● PWM 模式为 PWM 模式 1,
● 在根据 TIMx_CR1 寄存器中 CMS=01② 而选择的中心对齐模式 1 下,当计数器递减计数时,比较标志置 1。
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
中心对齐模式使用建议:
● 启动中心对齐模式时将使用当前的递增/递减计数配置。这意味着计数器将根据写入 TIMx_CR1 寄存器中 DIR① 位的值进行递增或递减计数。此外,不得同时通过软件修改 DIR① 和 CMS② 位。
● 不建议在运行中心对齐模式时对计数器执行写操作,否则将发生意想不到的结果。尤 其是:
- 如果写入计数器中的值大于自动重载值 (TIMx_CNT>TIMx_ARR),计数方向不会更新。例如,如果计数器之前递增计数,则继续递增计数。
- 如果向计数器写入 0 或 TIMx_ARR⑩ 的值,计数方向会更新,但不生成更新事件 UEV。
● 使用中心对齐模式最为保险的方法是:在启动计数器前通过软件生成更新(将 TIMx_EGR 寄存器中的 UG⑧ 位置 1),并且不要在计数器运行过程中对其执行写操作。