Bootstrap

stm32cubemx hal学习记录:PWM

一、配置过程

1、配置RCC、SYS、USART1、时钟84MHz

2、设置TIM2输出1kHz的PWM

Counter Settings:

 Prescaler(时钟预分频数):840-1

Counter Mode(计数模式):Up(向上计数模式)

Counter Period(自动重装载值):100-1

Internal Clock Division(时钟分频因子):No Division(不分频)

auto-reload preload(自动重装载):Enable(使能)

TRGO Output (TRGO) Parameters:

TRGO:在定时器的定时时间到达的时候输出一个信号(如:定时器更新产生TRGO信号来触发ADC的同步转换)

Master/Slave Mode(MSM bit):不使能

Trigger Event Selection:Reset(UG bit from TIMx_EGR)

PWM Generation Channel:

Mode(定时模式):PWM mode 1 设置定时器计数器与比较值相等时输出引脚的状态

Pulse(计数比较值):0 这里建议设置为0,在中断中改变比较寄存器的值

Output compare preload(输出比较预加载):Enable(使能) 作用和 auto-reload preload 类似

Fast Mode(脉冲快速模式):Disable(不使能) 与我们配置无关不使能

CH Polarity(输出极性):High 当定时器计数值小于 CCR1_Val 时,输出高电平

 3、生成代码

二、代码编写

1、在tim.c中添加定时器启动和中断函数

	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);

 2、在主函数中设置pwm占空比

		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,80);
		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,80);
		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_3,80);
		__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_4,80);

3、即完成1kHz,占空比为80%的方波

三、需要背的

1、打开定时器pwm

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);

2、设置占空比

__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,80);

;