赞
踩
在单位时间(3s)内,通过GPIO口,给高电平的时间逐渐变长,给低电平时间逐渐变短,来实现灯逐渐变亮。反之,灯逐渐变暗。
- 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);
- }
程序编译完成后,烧写进开发板。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。