基于for循环的呼吸灯

时间:2023-03-08 21:48:50
 #include "stm32f10x.h"
#include "stm32f10x_gpio.h"
//#include "led.h"
#include "Breath_led.h"
#define bbb 5000 /*
定义三个无符号变量:
i控制亮灭的时间
j控制亮灭的亮度变化 控制低电平的时间
K控制整个呼吸灯的时间 讲解:总的时间为5000us
bbb-j bbb(bbb-j)
1、高电平的时间5000us 低电平的时间为0 红灯最亮
3、高电平的时间4000us 低电平的时间为1000
4、高电平的时间3000us 低电平的时间为2000
4、高电平的时间2000us 低电平的时间为3000
5、高电平的时间1000us 低电平的时间为4000
6、高电平的时间0000us 低电平的时间为5000 红灯熄灭
以上是从最亮到熄灭的过程 下面是最暗到亮的过程
1、高电平的时间0000us 低电平的时间为5000 红灯最亮
3、高电平的时间1000us 低电平的时间为4000
4、高电平的时间2000us 低电平的时间为3000
4、高电平的时间3000us 低电平的时间为2000
5、高电平的时间4000us 低电平的时间为1000
6、高电平的时间5000us 低电平的时间为0000 红灯熄灭 */
void led_red_init(); void Breath_led()
{
led_red_init();//GPIO初始化
unsigned int i=,j=,k;
for(k=;k<bbb;k++)//控制整个呼吸灯的时间
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//点亮红灯
for(i=;i<bbb-j;i++);//高电平的时间 一开始最亮 GPIO_SetBits(GPIOB,GPIO_Pin_5);//熄灭红灯
for(i=;i<bbb-(bbb-j);i++);//给低电平的时间 j++;//控制亮度的变化
if(j==bbb)//当j低电平的时间等于5000时,说明已经快熄灭了
{
//j=0; //从零开始 for(k=;k<bbb;k++)
{
j--;
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
for(i=;i<bbb-j;i++);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
for(i=;i<bbb-(bbb-j);i++);
} }
} }
void led_red_init()
{ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitTypeDef gpio;
gpio.GPIO_Mode=GPIO_Mode_Out_PP;
gpio.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1;
gpio.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&gpio); GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1);//默认为低电平 }