《嵌入式 – GD32开发实战指南(RISC-V版本)》第8章 PWM输出实现
开发环境:
IDE:MounRiver Studio
开发板:GD32VF103V-EVAL
MCU:GD32VF103VB
1 PWM输出的工作原理
脉冲宽度调制(PWM),是英文“Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。
GD32 的定时器除了 TIMER5 和 6(基本定时器)。其他的定时器都可以用来产生 PWM 输出。
每个定时器有四个通道,每一个通道都有一个捕获比较寄存器,,将寄存器值和计数器值比较,通过比较结果输出高低电平,便可以实现脉冲宽度调制模式(PWM信号)。
在上一节,讲解了定时器的相关寄存器的基本原理,本节将不再赘述。下面谈谈如何使用定时器的寄存器进行PWM输出的。若配置脉冲计数器TIMERx_CNT为向上计数,而重载寄存器TIMERx_CAR配置为N,即TIMERx_CNT的当前计数值数值X在CK_TIMER时钟源的驱动下不断累加,当TIMERx_CNT的数值X大于N时,会重置TIMERx_CNT数值为0重新计数。而在TIMERx_CNT计数的同时,TIMERx_CNT的计数值X会与比较寄存器TIMERx_CHxCV预先存储了的数值A进行比较,当脉冲计数器TIMERx_CNT的数值X小于比较寄存器TIMERx_CHxCV的值A时,输出高电平(或低电平),相反地,当脉冲计数器的数值X大于或等于比较寄存器的值A时,输出低电平(或高电平)。如此循环,得到的输出脉冲周期就为重载寄存器TIMERx_CAR存储的数值(N+1)乘以触发脉冲的时钟周期,其