定时器与PWM的LED控制

一、PWM

PWM脉冲宽度调制,是一种常用的调制技术,它通过控制信号的占空比(即高电平时间占总周期时间的比例)来调节电压、功率或者信号的大小。

首先我们要知道PWM的3个重要的成员值,PWM频率、PWM占空比、PWM分辨率。

这3个成员值的赋值是完成呼吸灯,操作电机、舵机、马达的重要步骤。

1.频率

1秒钟内信号从高电平到低电平再回到高电平的次数,

而1/(PWM频率)就是完成一次从高电平到低电平再回到高电平,也就是一个周期所要的时间。

2.占空比 

周期内,高电平的时间占整个周期时间的比例,

这个占空比能对对输出的平均电压产生改变

下面是占空比50%和占空比10%的区别

3.分辨率

也就是刷新频率,它的原理是将一个周期分成很多份,只有在进入下一份时,电平才会出现改变。

如果给分辨率设为10%,那它就把一个周期分成10份,每一份中的电平是不变的,只有在进入下一份时,才会展示下一份中的电频。

二、实现延时灯

1.使用STM32CubeMX创建工程

(1)进入时钟界面,进行修改,将时钟修改为下图模式;

修改如下:

(2)在Times中选择Tim2进行设置。

设置效果如下图:

 

 

 其中根据赋值公式进行数据设置。

赋值公式如下:


(3)配置GPIO引脚。本次配置的引脚为GPIO_PA4。在GPIO选项中配置。

效果如图:

(4)代码编写。

  HAL_TIM_Base_Start_IT(&htim2);

将代码写进这一部分。 

 

 

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char ledState = 0;
    if (htim == (&htim2))
    {
        if (ledState == 0)
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
        else
            HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
        ledState = !ledState;
    }
}

将代码放在这一部分:

(5)实验效果:

 三、呼吸灯

(1)创建工程

在设置界面选择TIM3,在这里面进行条件设置。

设置如下:

这其下面继续设置:

 

(2)时钟设置

 

(3)代码编写

代码如下:

  /* USER CODE BEGIN 1 */
	
	uint16_t pwmVal=0;   //PWM占空比  
    uint8_t dir=1;  

  /* USER CODE END 1 */

 在这一部分放下代码;

  /* USER CODE BEGIN 2 */

  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

  /* USER CODE END 2 */

在这一部分 放下代码:

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  while (pwmVal< 500)
	  {
		  pwmVal++;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;    与上方相同
		  HAL_Delay(1);
	  }
	  while (pwmVal)
	  {
		  pwmVal--;
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比
//		  TIM3->CCR1 = pwmVal;     与上方相同
		  HAL_Delay(1);
	  }
	  HAL_Delay(200);

  }
  /* USER CODE END 3 */

在这一部分放下代码:

(4)实验效果:

 

 

总结

本次实验学习到了呼吸灯的实现,加强了延时灯的运用。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值