/*项目:呼吸灯 方法:通过延时来控制灯的亮和灭的时间,实现对灯的亮度的控制 */ #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "led.h" #include "breath.h" #define bbb 5000 void breath(){ //定义三个无符号整形,i控制灯亮/灭的时间,j控制的是灯亮和灭的亮度变化,k控制的是整个呼吸灯的时间 unsigned int i=0,j=0,k; while(1){ //通过循环来控制呼吸灯的总时间 for(k=0;k<bbb;k++){ //红灯灭掉 RED_OFF //红灯持续灭的时间 //这时bbb-j的值是最大的,也就是灯最暗的时候 for(i=0;i<bbb-j;i++); //红灯亮 RED_ON /*红灯亮持续的时间 因为控制整个呼吸灯的时间是一定的,所以控制亮和灭的值加起来要等于bbb, 所以这时的bbb-(bbb-j)的值是最小的,也就是几乎不亮*/ for(i=0;i<bbb-(bbb-j);i++); j++;//j++来控制灯的亮灭程度 if(j==bbb){ j=0; } } for(k=0;k<bbb;k++){ YELLOW_OFF for(i=0;i<bbb-(bbb-j);i++); YELLOW_ON for(i=0;i<bbb-j;i++); j++; if(j==bbb){ j=0; } } for(k=0;k<bbb;k++){ PURPLE_OFF for(i=0;i<bbb-(bbb-j);i++); PURPLE_ON for(i=0;i<bbb-j;i++); j++; if(j==bbb){ j=0; } } YELLOW_OFF RED_OFF PURPLE_OFF } }
学习交流可以联系QQ:1714066988