一、PWM的概述
1. PWM的概念
PWM指的是脉冲宽度调制,是一种利用微处理器的数字输出能力来控制模拟电路的技术。
PWM技术的关键参数有两个,一个是频率,一个是占空比,频率指的是利用STM32的定时器通道输出脉冲的次数,占空比指的是一个周期内高电平所占的比例。
PWM技术一般用在工业控制领域(控制电机的转速、控制舵机的角度......),所以必须掌握
2. PWM的原理
PWM技术的原理其实很简单,只不过是利用STM32定时器种的某个通道的输出比较功能(PWM模式)来输出周期性的脉冲信号,只不过要调节脉冲的宽度(调节占空比)。
思考:外设到底是和哪个定时器的哪个通道连接在一起的? 参考芯片数据手册和原理图
可以看到PF9 引脚和 TIM4_CH1 是相关联的,所以就需要把 PF9 引脚的功能设置为复用功能
函数原型
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
函数参数
参数一:GPIOx 指的是要复用的引脚端口 如GPIOF
参数二:GPIO_PinSource 指的是要复用的引脚编号 如GPIO_PinSource9
参数三:GPIO_AF 指的是要复用的引脚功能 如GPIO_AF_TIM14
3. PWM的使用
PWM的使用流程可以参考stm32f4xx_tim.c源文件的注释部分,如下图所示
(1)打开GPIO引脚的时钟+定时器的时钟
(2)配置GPIO的引脚(引脚模式需要设置为复用模式)+初始化GPIO
(3)把GPIO引脚的功能复用为对应的定时器
(4)配置定时器的定时时间(预分频+自动重载值)+初始化TIM
(5)配置定时器通道的参数(输出极性、PWM模式......)+初始化定时器通道TIM_OCxInit()
(6)使能定时器的预装载寄存器,调用TIM_OCxPreloadConfig
(7)使能自动重载预装载寄存器的ARPE位
(8)使能定时器 调用TIM_Cmd()
注意:PWM计数使用的是定时器通道的输出比较功能,所以不需要配置NVIC,也不需要编写中断服务函数。
如果想要调节PWM的占空比,可以利用TIM_SetComparex() x= 1 2 3 4 根据通道选