在STM32微控制器中,PWM代表脉冲宽度调制(Pulse Width Modulation)。PWM是一种用于控制电子设备的技术,通过调整信号的脉冲宽度和周期,可以模拟出不同的电压或功率级别。
配置PWM
一、开定时器的时钟
PWM是在通用定时器中,因此要进行定时器配置。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
二、配置定时器
//定义结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct={0};
//给结构体赋值
// TIM_TimeBaseInitStruct.TIM_ClockDivision = //时钟分割 CR1寄存器的位8和位9 基本定时器没有这两位 通用和高级才有
// TIM_TimeBaseInitStruct.TIM_CounterMode = //配置计数方向 TIME6只能向上计数 不支持配置
TIM_TimeBaseInitStruct.TIM_Period = 10000-1;//自动重装载值 0-(2^16-1) 16位寄存器
TIM_TimeBaseInitStruct.TIM_Prescaler = 7200-1;//预分频值 0-(2^16-1) 16位寄存器
// TIM_TimeBaseInitStruct.TIM_RepetitionCounter = //根据注释 参数只用于TIM1和TIM8
//调用xxx_init函数,将参数写入到寄存器中
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);
三、配置PWM
3.1配置比较函数
定时器有四个通道,对应比较函数有四个。
//定义设置比较函数需要的结构体
TIM_OCInitTypeDef TIM_OCInitStruct={0};
//void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); 设置TIMx_CH1 x能是1 2 3 4 5 8
//void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OC