写了一个只需要一个定时器和GPIO即可实现流水灯,方便大家DIY喜庆物品。
图在楼下。。
核心源码部分:
#define LedDelay 20
#define LedBright 200
#define LedChangeSpeed 3
#define PwmLed0 PwmLed[0] = LedBright
#define PwmLed1 PwmLed[1] = LedBright
#define PwmLed2 PwmLed[2] = LedBright
#define PwmLed3 PwmLed[3] = LedBright
#define PwmLed4 PwmLed[4] = LedBright
#define PwmLed5 PwmLed[5] = LedBright
#define PwmLed6 PwmLed[6] = LedBright
#define PwmLed7 PwmLed[7] = LedBright
#define PwmLed8 PwmLed[8] = LedBright
#define PwmLed9 PwmLed[9] = LedBright
#define PwmLed10 PwmLed[10] = LedBright
#define PwmLed11 PwmLed[11] = LedBright
#define PwmLed12 PwmLed[12] = LedBright
#define PwmLed13 PwmLed[13] = LedBright
#define PwmLed14 PwmLed[14] = LedBright
#define PwmLed15 PwmLed[15] = LedBright
#define PwmLed16 PwmLed[16] = LedBright
#define PwmLed17 PwmLed[17] = LedBright
#define PwmLed18 PwmLed[18] = LedBright
#define PwmLed19 PwmLed[19] = LedBright
#define PwmLed20 PwmLed[20] = LedBright
#define PwmLed21 PwmLed[21] = LedBright
#define PwmLed22 PwmLed[22] = LedBright
#define PwmLed23 PwmLed[23] = LedBright
u16 PwmLed[24]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
void Delay(u16 nms);
void SimplifyLed(u32 simplify);//?ò????·¨
int main(void)
{
SystemInit();
delay_init(72); //???±??????
NVIC_Configuration();
LED_Init();
Time2_Init(2);
while(1)
{
SimplifyLed(0x00800001);
Delay(LedDelay);
SimplifyLed(0x00400002);
Delay(LedDelay);
SimplifyLed(0x00200004);
Delay(LedDelay);
SimplifyLed(0x00100008);
Delay(LedDelay);
SimplifyLed(0x00080010);
Delay(LedDelay);
SimplifyLed(0x00040020);
Delay(LedDelay);
SimplifyLed(0x00020040);
Delay(LedDelay);
SimplifyLed(0x00010080);
Delay(LedDelay);
SimplifyLed(0x00008100);
Delay(LedDelay);
SimplifyLed(0x00004200);
Delay(LedDelay);
SimplifyLed(0x00002400);
Delay(LedDelay);
SimplifyLed(0x00001800);
Delay(LedDelay);
SimplifyLed(0x00002400);
Delay(LedDelay);
SimplifyLed(0x00004200);
Delay(LedDelay);
SimplifyLed(0x00008100);
Delay(LedDelay);
SimplifyLed(0x00010080);
Delay(LedDelay);
SimplifyLed(0x00020040);
Delay(LedDelay);
SimplifyLed(0x00040020);
Delay(LedDelay);
SimplifyLed(0x00080010);
Delay(LedDelay);
SimplifyLed(0x00100008);
Delay(LedDelay);
SimplifyLed(0x00200004);
Delay(LedDelay);
SimplifyLed(0x00400002);
Delay(LedDelay);
SimplifyLed(0x00800001);
Delay(LedDelay*16);
}
}
void SimplifyLed(u32 simplify)
{
if(simplify&0x00000001) PwmLed0;
if(simplify&0x00000002) PwmLed1;
if(simplify&0x00000004) PwmLed2;
if(simplify&0x00000008) PwmLed3;
if(simplify&0x00000010) PwmLed4;
if(simplify&0x00000020) PwmLed5;
if(simplify&0x00000040) PwmLed6;
if(simplify&0x00000080) PwmLed7;
if(simplify&0x00000100) PwmLed8;
if(simplify&0x00000200) PwmLed9;
if(simplify&0x00000400) PwmLed10;
if(simplify&0x00000800) PwmLed11;
if(simplify&0x00001000) PwmLed12;
if(simplify&0x00002000) PwmLed13;
if(simplify&0x00004000) PwmLed14;
if(simplify&0x00008000) PwmLed15;
if(simplify&0x00010000) PwmLed16;
if(simplify&0x00020000) PwmLed17;
if(simplify&0x00040000) PwmLed18;
if(simplify&0x00080000) PwmLed19;
if(simplify&0x00100000) PwmLed20;
if(simplify&0x00200000) PwmLed21;
if(simplify&0x00400000) PwmLed22;
if(simplify&0x00800000) PwmLed23;
}
void TIM2_IRQHandler(void) //TIM2????
{
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
if(PwmLed[0])LEDS0=0;
delay_us(PwmLed[0]);
LEDS0=1;
if(PwmLed[0]>0)PwmLed[0]--;
if(PwmLed[1])LEDS1=0;
delay_us(PwmLed[1]);
LEDS1=1;
if(PwmLed[1]>0)PwmLed[1]--;
if(PwmLed[2])LEDS2=0;
delay_us(PwmLed[2]);
LEDS2=1;
if(PwmLed[2]>0)PwmLed[2]--;
if(PwmLed[3])LEDS3=0;
delay_us(PwmLed[3]);
LEDS3=1;
if(PwmLed[3]>0)PwmLed[3]--;
if(PwmLed[4])LEDS4=0;
delay_us(PwmLed[4]);
LEDS4=1;
if(PwmLed[4]>0)PwmLed[4]--;
if(PwmLed[5])LEDS5=0;
delay_us(PwmLed[5]);
LEDS5=1;
if(PwmLed[5]>0)PwmLed[5]--;
if(PwmLed[6])LEDS6=0;
delay_us(PwmLed[6]);
LEDS6=1;
if(PwmLed[6]>0)PwmLed[6]--;
if(PwmLed[7])LEDS7=0;
delay_us(PwmLed[7]);
LEDS7=1;
if(PwmLed[7]>0)PwmLed[7]--;
if(PwmLed[8])LEDS8=0;
delay_us(PwmLed[8]);
LEDS8=1;
if(PwmLed[8]>0)PwmLed[8]--;
if(PwmLed[9])LEDS9=0;
delay_us(PwmLed[9]);
LEDS9=1;
if(PwmLed[9]>0)PwmLed[9]--;
if(PwmLed[10])LEDS10=0;
delay_us(PwmLed[10]);
LEDS10=1;
if(PwmLed[10]>0)PwmLed[10]--;
if(PwmLed[11])LEDS11=0;
delay_us(PwmLed[11]);
LEDS11=1;
if(PwmLed[11]>0)PwmLed[11]--;
if(PwmLed[12])LEDS12=0;
delay_us(PwmLed[12]);
LEDS12=1;
if(PwmLed[12]>0)PwmLed[12]--;
if(PwmLed[13])LEDS13=0;
delay_us(PwmLed[13]);
LEDS13=1;
if(PwmLed[13]>0)PwmLed[13]--;
if(PwmLed[14])LEDS14=0;
delay_us(PwmLed[14]);
LEDS14=1;
if(PwmLed[14]>0)PwmLed[14]--;
if(PwmLed[15])LEDS15=0;
delay_us(PwmLed[15]);
LEDS15=1;
if(PwmLed[15]>0)PwmLed[15]--;
if(PwmLed[16])LEDS16=0;
delay_us(PwmLed[16]);
LEDS16=1;
if(PwmLed[16]>0)PwmLed[16]--;
if(PwmLed[17])LEDS17=0;
delay_us(PwmLed[17]);
LEDS17=1;
if(PwmLed[17]>0)PwmLed[17]--;
if(PwmLed[18])LEDS18=0;
delay_us(PwmLed[18]);
LEDS18=1;
if(PwmLed[18]>0)PwmLed[18]--;
if(PwmLed[19])LEDS19=0;
delay_us(PwmLed[19]);
LEDS19=1;
if(PwmLed[19]>0)PwmLed[19]--;
if(PwmLed[20])LEDS20=0;
delay_us(PwmLed[20]);
LEDS20=1;
if(PwmLed[20]>0)PwmLed[20]--;
if(PwmLed[21])LEDS21=0;
delay_us(PwmLed[21]);
LEDS21=1;
if(PwmLed[21]>0)PwmLed[21]--;
if(PwmLed[22])LEDS22=0;
delay_us(PwmLed[22]);
LEDS22=1;
if(PwmLed[22]>0)PwmLed[22]--;
if(PwmLed[23])LEDS23=0;
delay_us(PwmLed[23]);
LEDS23=1;
if(PwmLed[23]>0)PwmLed[23]--;
}
void Delay(u16 nms)
{
u16 i=0;
while(nms--)
{
i=7000;
while(i--);
}
}
日历要换新了,祝大家新一年身体健康,学习进步,事业有成。

|