O_纯IO呼吸流水灯


O_嵌入式专题目录

单个IO呼吸灯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
volatile uint32_t LED_i=0,LED_time=1600;
volatile uint8_t LED_Flag=0,iFor=0;
while (1)
{
HAL_IWDG_Refresh(&hiwdg);
if(LED_i>=(LED_time-1))
LED_Flag=1;
else if(LED_i<=1)
LED_Flag=0;

if(LED_Flag)
LED_i--;
else
LED_i++;

HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_SET);
delay_LED(LED_i);
HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_RESET);
delay_LED(LED_time-LED_i);
}

7个IO控制惯性流水灯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
volatile uint32_t LED_i=0,LED_time=1600;
volatile uint8_t LED_Flag=0,iFor=0;
volatile uint8_t LED_PortValue=0x01;
while (1)
{
HAL_IWDG_Refresh(&hiwdg);
if(LED_i>=(LED_time-1))
LED_Flag=1;
else if(LED_i<=1)
LED_Flag=0;

if(LED_Flag)
LED_i--;
else
LED_i++;

if(LED_PortValue&0x01)
HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x02)
HAL_GPIO_WritePin(Relay1_LED_GPIO_Port, Relay1_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(Relay1_LED_GPIO_Port, Relay1_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x04)
HAL_GPIO_WritePin(Relay2_LED_GPIO_Port, Relay2_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(Relay2_LED_GPIO_Port, Relay2_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x08)
HAL_GPIO_WritePin(PA1_LED_GPIO_Port, PA1_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA1_LED_GPIO_Port, PA1_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x10)
HAL_GPIO_WritePin(PA2_LED_GPIO_Port, PA2_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA2_LED_GPIO_Port, PA2_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x20)
HAL_GPIO_WritePin(PA3_LED_GPIO_Port, PA3_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA3_LED_GPIO_Port, PA3_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x40)
HAL_GPIO_WritePin(PA4_LED_GPIO_Port, PA4_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA4_LED_GPIO_Port, PA4_LED_Pin, GPIO_PIN_SET);

delay_LED(LED_i);

HAL_GPIO_TogglePin(RS485_LED_GPIO_Port, RS485_LED_Pin);
HAL_GPIO_TogglePin(Relay1_LED_GPIO_Port, Relay1_LED_Pin);
HAL_GPIO_TogglePin(Relay2_LED_GPIO_Port, Relay2_LED_Pin);
HAL_GPIO_TogglePin(PA1_LED_GPIO_Port, PA1_LED_Pin);
HAL_GPIO_TogglePin(PA2_LED_GPIO_Port, PA2_LED_Pin);
HAL_GPIO_TogglePin(PA3_LED_GPIO_Port, PA3_LED_Pin);
HAL_GPIO_TogglePin(PA4_LED_GPIO_Port, PA4_LED_Pin);
delay_LED(LED_time-LED_i);

iFor++;
if(iFor>10)
{
iFor=0;
if(LED_PortValue&0x40)
LED_PortValue=LED_PortValue<<1;
else
LED_PortValue=(LED_PortValue<<1)+0x01;
}
}

7个IO控制呼吸流水灯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
volatile uint32_t iCount[7]={0},LED_i[7]={0},LED_time=600,iFor=0,jFor=0;
volatile uint8_t LED_Flag[7]={0},LED_PortValue=0x00,LED_Wide=60;
for(iFor=0;iFor<7;iFor++)
LED_i[iFor]=LED_Wide*iFor;

while (1)
{
HAL_IWDG_Refresh(&hiwdg);


if(iCount[0]<LED_i[0])
LED_PortValue=LED_PortValue|0x01;
else
LED_PortValue=LED_PortValue&0x7E;
if(iCount[1]<LED_i[1])
LED_PortValue=LED_PortValue|0x02;
else
LED_PortValue=LED_PortValue&0x7D;
if(iCount[2]<LED_i[2])
LED_PortValue=LED_PortValue|0x04;
else
LED_PortValue=LED_PortValue&0x7B;
if(iCount[3]<LED_i[3])
LED_PortValue=LED_PortValue|0x08;
else
LED_PortValue=LED_PortValue&0x77;
if(iCount[4]<LED_i[4])
LED_PortValue=LED_PortValue|0x10;
else
LED_PortValue=LED_PortValue&0x6F;
if(iCount[5]<LED_i[5])
LED_PortValue=LED_PortValue|0x20;
else
LED_PortValue=LED_PortValue&0x5F;
if(iCount[6]<LED_i[6])
LED_PortValue=LED_PortValue|0x40;
else
LED_PortValue=LED_PortValue&0x3F;


for(iFor=0;iFor<7;iFor++)
{
iCount[iFor]++;
if(iCount[iFor]>(LED_time-1))
{
iCount[iFor]=0;
if(LED_i[iFor]>=(LED_time-1))
LED_Flag[iFor]=1;
else if(LED_i[iFor]<=1)
LED_Flag[iFor]=0;
if(LED_Flag[iFor])
LED_i[iFor]--;
else
LED_i[iFor]++;
}
}


if(LED_PortValue&0x01)
HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(RS485_LED_GPIO_Port, RS485_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x02)
HAL_GPIO_WritePin(Relay1_LED_GPIO_Port, Relay1_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(Relay1_LED_GPIO_Port, Relay1_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x04)
HAL_GPIO_WritePin(Relay2_LED_GPIO_Port, Relay2_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(Relay2_LED_GPIO_Port, Relay2_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x08)
HAL_GPIO_WritePin(PA1_LED_GPIO_Port, PA1_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA1_LED_GPIO_Port, PA1_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x10)
HAL_GPIO_WritePin(PA2_LED_GPIO_Port, PA2_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA2_LED_GPIO_Port, PA2_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x20)
HAL_GPIO_WritePin(PA3_LED_GPIO_Port, PA3_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA3_LED_GPIO_Port, PA3_LED_Pin, GPIO_PIN_SET);

if(LED_PortValue&0x40)
HAL_GPIO_WritePin(PA4_LED_GPIO_Port, PA4_LED_Pin, GPIO_PIN_RESET);
else
HAL_GPIO_WritePin(PA4_LED_GPIO_Port, PA4_LED_Pin, GPIO_PIN_SET);
}