embox

Форк
0
69 строк · 1.2 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author  Dmitry Kocherygin
6
 * @date    15.12.2021
7
 */
8

9
#include <stdio.h>
10
#include <stdlib.h>
11
#include <errno.h>
12
#include <unistd.h>
13

14
#include <lib/libds/array.h>
15
#include <drivers/gpio/gpio.h>
16

17
struct led_desc {
18
    int gpio; /**< port */
19
    int pin; /**< pin mask */
20
};
21

22
static const struct led_desc leds[] = {
23
#include <gpio_config.inc>
24
};
25

26
#define LEDS_N ARRAY_SIZE(leds)
27

28
int led_driver_set(unsigned int nr) {
29

30
    if (nr >= 2)     {
31
        return -EINVAL;
32
    }
33
    gpio_set(leds[nr].gpio, leds[nr].pin, GPIO_PIN_HIGH);
34

35
    return 0;
36
}
37

38
int led_driver_clear(unsigned int nr) {
39

40
    if (nr >= 2) {
41
        return -EINVAL;
42
    }
43

44
    gpio_set(leds[nr].gpio, leds[nr].pin, GPIO_PIN_LOW);
45

46
    return 0;
47
}
48

49
int main(int argc, char *argv[]) {
50
    int i;
51
    for (i = 0; i < LEDS_N; i++) {
52
        if (0 != gpio_setup_mode(leds[i].gpio, leds[i].pin,
53
                                 GPIO_MODE_OUT)) {
54
            return -EINVAL;
55
        }
56
    }
57

58
    while (1) {        
59
        for (i = 0; i < LEDS_N; i++) {
60
            led_driver_set(i);
61
            sleep (1);
62
            led_driver_clear(i);
63
            if (LEDS_N == 1) {
64
                sleep (1);                
65
            }                
66
        }          
67
    }
68
    return 0;
69
}
70

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.