STM32CubeXm做一个呼吸灯

呼吸灯原理

       在单位时间(3s)内,通过GPIO口,给高电平的时间逐渐变长,给低电平时间逐渐变短,来实现灯逐渐变亮。反之,灯逐渐变暗。

自定义Delay函数

void Delay(int i)
{
	while(i--);
}

  与HAL_Delay()不同,HAL_Delay是延迟响应毫秒数,显而易见,毫秒数并不能使得我们达到视觉暂留的效果,因此我们必须选择一种高于毫秒级的方式,这种方式就是利用函数的执行语句的速度。

设置亮暗的循环周期

     在3秒的单位时间中,时间是逐渐增加的。那我们把高电平的时间逐渐增加Delay(i)呢,把低电平的时间逐渐减少Delay(3000 - i)。

高低电平:1s:低低高  -----  2s:低高高 ----- 3s: 高高高

逐渐亮的逻辑

    把低电平时间逐渐减少,高电平时间逐渐增加

  for(int i=0;i<3000;i++)
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET);
			Delay(i);
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET);
			Delay(3000-i);
		}

逐渐暗的逻辑

    把高电平时间逐渐减少,低电平时间逐渐增加

for(int i=3000;i>0;i--)
		{
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET);
			Delay(i);
			HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET);
			Delay(3000-i);
		}

 

 程序编译完成后,烧写进开发板。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值