STM32CubeMX配置PWM输出

PWM——脉宽调制技术,是一种非常常用的数字信号,常用在对电压和电流的控制中,如直流电机驱动控制、呼吸灯控制等。在单片机开发中,会PWM的产生和控制是必要的,这里我们借助STM32CubeMX生成一个产生频率为1KHz、占空比为50%的工程。

首先创建STM32CubeMX工程,并配置好时钟和下载模式。具体可见第一个STM32工程

然后我们就正式开始配置PWM

首先要明确一点,PWM是有频率和占空比(一个周期中高电平所占的百分比)的,况且频率和占空比是可调的,要实现这些就得借助定时器,STM32除了基本定时器外都能产生PWM。
其中,通用定时器可以产生4路PWM,而高级定时器可以产生8路PWM,其中的四路为互补输出。
STM32CubeMX配置PWM输出_第1张图片
在自己对应的通道里面选择PWM Genration CH1
配置好PWM输出后就要设置频率和占空比
STM32CubeMX配置PWM输出_第2张图片
Parameter Settings中设置好Prescaler(预分频系数)、Counter Period(重装载值)、Pulse(脉冲时长),
我一般习惯将PSC设置为主频-1,这样分频后一个周期刚好是1us,然后将ARR设置为1000-1,这样每个周期就是1ms,频率也就为1KHz。而Pulse设置为占空比,设置为500,刚好为1000的一半,则占空比为50%。

至此,PWM输出的配置就已经完成了,生成代码下进单片机中,但是并没有产生PWM波,因为Cube在生成代码时,有很多外设初始化完后默认是关闭的,需要我们手动开启。
代码如下:

MX_GPIO_Init();
MX_TIM1_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);	//开启定时器1的通道1的PWM输出
/* USER CODE END 2 */

你可能感兴趣的:(STM32)