STM32通用定时器的呼吸灯实验

STM32呼吸灯的原理就是利用PWM技术控制LED的亮度变化,以实现呼吸灯效果。

PWM是脉冲宽度调制(Pulse Width Modulation)的缩写,是一种控制方法,主要应用于各种电子设备的控制器中。从控制电路的输出来看,PWM是一种将脉冲宽度作为控制目标的调制技术。它通过控制每个脉冲的宽度和频率,来控制输出电平的平均值,从而达到控制电路的目的。例如,在电机控制器中,PWM技术可以通过改变电机绕组的电流方向和大小来控制电机的转速和转向。在LED灯控制器中,PWM技术可以通过短时间的开关灯电压,来控制LED的明暗和亮度。

(注:本文实验基于STM32F407IGH6+CubeMX5.3)

具体实现过程如下:

1,配置GPIO口为PWM输出模式,设置对应的频率和占空比;

2,设置RCC为外部晶振模式

3,打开PWM,使用HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

4,设置比较寄存器:

void TIM13_Set_Compare(uint32_t compare) //定时器捕获
{
	TIM13->CCR1 = compare;      //通过修改comepare值来影响占空比
}

5,初始化:int32_t compare = 0; //led比较值 
    uint8_t dir = 0;     //增长方向向上

6,开启开启PWM信号产生器:HAL_TIM_PWM_Start(&htim13, TIM_CHANNEL_1); 

7,在主循环中设置一个计数器,每次循环时改变计数器的值,作为PWM输出的占空比;

while (1)
  {
	  if(!dir) 					//向上增长
	  {
		compare += 10;
		if(compare >= 1000)
		{
			compare = 1000-1;
			dir = 1;
		}
	  }
	  else{ 					//向下增长
		compare -= 10;
		if(compare<=0)
		{
			compare = 0;
			dir = 0; 			//向上
		}
	  }
	  
	  TIM13_Set_Compare(compare);  //设置CCR的值
	  
	  HAL_Delay(20);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值