-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLED.c
72 lines (64 loc) · 1.58 KB
/
LED.c
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
#include "led.h"
#define LED1_GPIO LPC_GPIO1
#define LED2_GPIO LPC_GPIO0
#define LED3_GPIO LPC_GPIO1
#define LED4_GPIO LPC_GPIO2
#define LED1_GPIO_PIN_BIT 18
#define LED2_GPIO_PIN_BIT 13
#define LED3_GPIO_PIN_BIT 13
#define LED4_GPIO_PIN_BIT 19
void led_init(void) {
// make pins output
LED1_GPIO->DIR |= (1 << LED1_GPIO_PIN_BIT);
LED2_GPIO->DIR |= (1 << LED2_GPIO_PIN_BIT);
LED3_GPIO->DIR |= (1 << LED3_GPIO_PIN_BIT);
LED4_GPIO->DIR |= (1 << LED4_GPIO_PIN_BIT);
// turn them off initially
LED1_GPIO->SET |= (1 << LED1_GPIO_PIN_BIT);
LED2_GPIO->SET |= (1 << LED2_GPIO_PIN_BIT);
LED3_GPIO->CLR |= (1 << LED3_GPIO_PIN_BIT);
LED4_GPIO->CLR |= (1 << LED4_GPIO_PIN_BIT);
}
void led_turn_on(uint8_t led_no) {
switch (led_no) {
case 0:
LED1_GPIO->CLR |= (1 << LED1_GPIO_PIN_BIT);
break;
case 1:
LED2_GPIO->CLR |= (1 << LED2_GPIO_PIN_BIT);
break;
case 2:
LED3_GPIO->SET |= (1 << LED3_GPIO_PIN_BIT);
break;
case 3:
LED4_GPIO->SET |= (1 << LED4_GPIO_PIN_BIT);
break;
}
}
void led_turn_off(uint8_t led_no) {
switch (led_no) {
case 0:
LED1_GPIO->SET |= (1 << LED1_GPIO_PIN_BIT);
break;
case 1:
LED2_GPIO->SET |= (1 << LED2_GPIO_PIN_BIT);
break;
case 2:
LED3_GPIO->CLR |= (1 << LED3_GPIO_PIN_BIT);
break;
case 3:
LED4_GPIO->CLR |= (1 << LED4_GPIO_PIN_BIT);
break;
}
}
void led_turn_off_all(void) {
for (int i = 0; i < LED_COUNT; i++)
led_turn_off(i);
}
void led_turn_on_solo(uint8_t led_no) {
for (int i = 0; i < LED_COUNT; i++)
if (i == led_no)
led_turn_on(i);
else
led_turn_off(i);
}