STM32 HAL库 定时器PWM输出

STM32CUBEMX系列教程:定时器PWM输出实验


环境:
1、STM32CubeMX 5.3
2、Atollic TrueSTUDIO for STM32 9.3.0
3、战舰迷你板(stm32f103rb)

本章效果为LED灯由PWM控制,由暗到亮,再由亮到暗,反复循环。


(一)配置LED灯引脚为输入模式

STM32 HAL库 定时器PWM输出_第1张图片

(二)配置定时器

频率的计算方法:
STM32 HAL库 定时器PWM输出_第2张图片
定时器配置频率为10KHZ,所以ARR=99,PSC=71,占空比范围就是ARR的范围:0-100,100就是全为高:
STM32 HAL库 定时器PWM输出_第3张图片
初始化定时器后要使能PWM输出:

HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);

改变捕获比较值,也就是改变占空比:

__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, val);

正点原子mini板的PA8是led灯,定时器3的PWM输出通道2是PA7,所以在板子上用跳线帽将PA8和PA7连接起来即可:

int main(void)
{
     
	uint8_t mode = 1;
	uint32_t led0pwmval = 0;
	int i = 0;

	HAL_Init();
	SystemClock_Config();

	MX_GPIO_Init();
	MX_TIM3_Init();
	MX_USART1_UART_Init();
	HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);		// 使能PWM输出

	while (1)
	{
     
		if (mode)
			led0pwmval++;
		else
			led0pwmval--;

		if (led0pwmval >= 100)
			mode = 0;
		if (led0pwmval == 0)
			mode = 1;

		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, led0pwmval);		// 改变占空比
		HAL_Delay(10);

		i++;
		if (i >= 100)
		{
     
			i = 0;
			HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
		}
	}
}


ends…

你可能感兴趣的:(STM32,PWM,HAL,定时器,STM32)