当前位置:   article > 正文

STM32CubeXm做一个呼吸灯_delay实现呼吸灯

delay实现呼吸灯

呼吸灯原理

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

自定义Delay函数

  1. void Delay(int i)
  2. {
  3. while(i--);
  4. }

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

设置亮暗的循环周期

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

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

逐渐亮的逻辑

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

  1. for(int i=0;i<3000;i++)
  2. {
  3. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET);
  4. Delay(i);
  5. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET);
  6. Delay(3000-i);
  7. }

逐渐暗的逻辑

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

  1. for(int i=3000;i>0;i--)
  2. {
  3. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_RESET);
  4. Delay(i);
  5. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2,GPIO_PIN_SET);
  6. Delay(3000-i);
  7. }

 

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/75962
推荐阅读
相关标签
  

闽ICP备14008679号