STM32 流水灯续集

流水灯续集

这里写出三种不同的代码,均可是实现流水灯的效果。

代码展示

  • 1、最简单的方式,直接输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void led_display1()
{
while(1){
GPIO_Write(GPIOC,0xfe);
delay(6000000);
GPIO_Write(GPIOC,0xfd);
delay(6000000);
GPIO_Write(GPIOC,0xfb);
delay(6000000);
GPIO_Write(GPIOC,0xf7);
delay(6000000);
GPIO_Write(GPIOC,0xef);
delay(6000000);
GPIO_Write(GPIOC,0xdf);
delay(6000000);
GPIO_Write(GPIOC,0xbf);
delay(6000000);
GPIO_Write(GPIOC,0x7f);
delay(6000000);
}
}
  • 2、通过每次移动不同的位数
1
2
3
4
5
6
7
8
9
10
void led_display2()
{
int i = 0;
while(1){
for(i = 0;i<8;i++){
GPIO_Write(GPIOC,~(0x01<<i));
delay(6000000);
}
}
}
  • 3、每次都只移动一位,但是采用或0x01实现将每次移位自动补充的0变成1。这种方式和之前的每次移位后加1的操作本质上是相同的。
1
2
3
4
5
6
7
8
9
10
11
12
void led_display()
{
int i = 0xfe;
int j = 8;
while(j){
GPIO_Write(GPIOC,i);
delay(6000000);
i = i << 1;
i = i | 0x01;
j--;
}
}