PWM 输出模式
PWM 产生
通过设置寄存器字段 PWM_MODE = 0x0,使 PWM 进入 PWM 输出模式。在该模式下,通过周期寄存器 PWM_PRD 和比较寄存器 PWM_CMP,可以调节 PWM 的频率以及占空比。
PWM 的生成方式,固定为在计数器 PWM_CNT = 0 的时刻,PWM 的输出为高电平。在 PWM_CNT = PWM_CMP 的时刻,PWM 的输出为低电平。
-
PWM_FRE = PWM_CNT_CLK / PWM_PRD
-
PWM_DUTY = PWM_CMP / PWM_PRD
- PWM_CNT_CLK = SYS_CLK / DIV
下图以 PWM_PRD = 0x7,PWM_CMP = 0x4 的 PWM 输出为例,占空比为 4/7:

动态更新
- 立即更新:修改 PWM_PRD 和 PWM_CMP 寄存器后,PWM 立即生效。
- 影子更新:修改 PWM_PRD 和 PWM_CMP 寄存器后,在下一个周期进行 PWM 的更新,即下一个周期的 PWM_CNT_Z 对应的时刻进行更新。
PWM_CMP 立即更新的举例:
PWM_CMP 从 CMP0 更新到 CMP1,其中 CMP1 小于 CMP0,也小于当前的计数器数值。

PWM_CMP 影子更新的举例
PWM_CMP 从 CMP0 更新到 CMP1,其中 CMP1 小于 CMP0,也小于当前的计数器数值。

PWM_PRD 立即更新的举例:
PWM_PRD 从 PRD0 更新到 PRD1,其中 PRD1 小于 PRD0。

PWM_PRD 影子更新的举例:
PWM_PRD 从 PRD0 更新到 PRD1,其中 PRD1 是小于 PRD0。

中断信号
PWM 在 PWM 模式下,支持中断的产生,中断信号如下:
- PWM_CNT_Z:在计数器 PWM_CNT = 0 的时刻,对应产生的标记信号。
- PWM_CNT_CMP:在计数器 PWM_CNT = PWM_CMP 的时刻,对应产生的标记信号。
- PWM_CNT_PRD:在计数器 PWM_CNT =(PWM_CNT_PRD - 1)的时刻,对应产生的标记信号。
