1 #include "stm32f10x.h" 2 #include "stm32f10x_gpio.h" 3 //#include "led.h" 4 #include "Breath_led.h" 5 #define bbb 5000 6 7 /* 8 定義三個無符號變量: 9 i控制亮滅的時間 10 j控制亮滅的亮度變化 控制低電平的時間 11 K控制整個呼吸燈的時間 12 13 講解:總的時間爲5000us 14 bbb-j bbb(bbb-j) 15 一、高電平的時間5000us 低電平的時間爲0 紅燈最亮 16 三、高電平的時間4000us 低電平的時間爲1000 17 四、高電平的時間3000us 低電平的時間爲2000 18 四、高電平的時間2000us 低電平的時間爲3000 19 五、高電平的時間1000us 低電平的時間爲4000 20 六、高電平的時間0000us 低電平的時間爲5000 紅燈熄滅 21 以上是從最亮到熄滅的過程 22 23 下面是最暗到亮的過程 24 一、高電平的時間0000us 低電平的時間爲5000 紅燈最亮 25 三、高電平的時間1000us 低電平的時間爲4000 26 四、高電平的時間2000us 低電平的時間爲3000 27 四、高電平的時間3000us 低電平的時間爲2000 28 五、高電平的時間4000us 低電平的時間爲1000 29 六、高電平的時間5000us 低電平的時間爲0000 紅燈熄滅 30 31 32 33 34 */ 35 void led_red_init(); 36 37 void Breath_led() 38 { 39 led_red_init();//GPIO初始化 40 unsigned int i=0,j=0,k; 41 for(k=0;k<bbb;k++)//控制整個呼吸燈的時間 42 { 43 GPIO_ResetBits(GPIOB,GPIO_Pin_5);//點亮紅燈 44 for(i=0;i<bbb-j;i++);//高電平的時間 一開始最亮 45 46 GPIO_SetBits(GPIOB,GPIO_Pin_5);//熄滅紅燈 47 for(i=0;i<bbb-(bbb-j);i++);//給低電平的時間 48 49 j++;//控制亮度的變化 50 if(j==bbb)//當j低電平的時間等於5000時,說明已經快熄滅了 51 { 52 //j=0; //從零開始 53 54 for(k=0;k<bbb;k++) 55 { 56 j--; 57 GPIO_ResetBits(GPIOB,GPIO_Pin_5); 58 for(i=0;i<bbb-j;i++); 59 GPIO_SetBits(GPIOB,GPIO_Pin_5); 60 for(i=0;i<bbb-(bbb-j);i++); 61 } 62 63 64 } 65 } 66 67 } 68 void led_red_init() 69 { 70 71 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 72 GPIO_InitTypeDef gpio; 73 gpio.GPIO_Mode=GPIO_Mode_Out_PP; 74 gpio.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1; 75 gpio.GPIO_Speed=GPIO_Speed_50MHz; 76 GPIO_Init(GPIOB,&gpio); 77 78 GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1);//默認爲低電平 79 80 }