【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验

文章目录

  • 前言
  • 一、PWM波是什么?
  • 二、PWM输出实验
    • 1.功能配置
    • 2.时钟配置
    • 3.生成代码
  • 总结


前言

在学习了定时器的中断,接下来我们继续配置定时器的另外一个重要功能——输出PWM波

一、PWM波是什么?

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。

二、PWM输出实验

1.功能配置

1、根据库函数本实验是以定时器14的CH1为例,在功能选择区选择TIM14(对应引脚为PF9,即可观察LED的亮度检测实验)。
2、根据库函数定义,配置如下
【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第1张图片
【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第2张图片
3、对复用引脚进行配置
【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第3张图片
【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第4张图片

2.时钟配置

RCC时钟配置如前文一样(此处一般情况是不变的)。
【STM32F4】HAL库 CubeMX(一)--------创建工程(点亮LED)

3.生成代码

1、根据库函数代码, 添加以下代码即可实现本实验
【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第5张图片

【STM32F4】HAL库 CubeMX(八)--------定时器输出PWM波实验_第6张图片

	uint16_t led0pwmval=0; 
	uint8_t dir=1;
  HAL_TIM_PWM_Start(&htim14, TIM_CHANNEL_1);
  	HAL_Delay(10);
	if(dir)led0pwmval++;
		else led0pwmval--;
	  
	if(led0pwmval>300)dir=0;
	if(led0pwmval==0)dir=1;
	  
	__HAL_TIM_SetCompare(&htim14, TIM_CHANNEL_1, led0pwmval);

总结

定时器有很多,大家可以去尝试用其他定时器┗|`O′|┛ 嗷~~
大家也可以用按键控制灯的亮度。
在这里插入图片描述

你可能感兴趣的:(单片机,stm32)