gpio-led-blink-loongarch.ino

Computador industrial de placa única BPI-5202 Loongson 2K1000LAi · Archivo : gpio-led-blink-loongarch.ino · Lenguaje : C · Uso : Allumer et éteindre une LED connectée au port d'extension GPIO pour tester la sortie numérique.

Ejemplo en C que utiliza la API GPIOv2 del kernel Linux para controlar un LED a través del bus interno del puerto de extensión.

Compilado con gcc bajo Loongnix o LoongOS. El BPI-5202 expone los GPIO a través de /dev/gpiochip0. Consulte el esquema para la correspondencia exacta de los pines físicos. Ejecute como root: sudo ./led_blink.

gpio-led-blink-loongarch.ino

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/gpio.h>

#define GPIO_PIN 17 // Exemple de broche sur le connecteur 20-pin

int main() {
    int fd;
    struct gpiohandle_request req;
    struct gpiohandle_data data;

    // Ouvrir le contrôleur GPIO
    fd = open("/dev/gpiochip0", O_RDONLY);
    if (fd < 0) {
        perror("Failed to open gpiochip0");
        return 1;
    }

    // Configurer la demande de ligne GPIO
    req.lineoffsets[0] = GPIO_PIN;
    req.flags = GPIOHANDLE_REQUEST_OUTPUT;
    req.default_values[0] = 0; // Éteint au démarrage
    req.lines = 1;
    req.consumer_label = "bpi5202_led";

    // Demander la ligne GPIO
    if (ioctl(fd, GPIO_GET_LINEHANDLE_IOCTL, &req) < 0) {
        perror("Failed to request GPIO line");
        close(fd);
        return 1;
    }

    printf("Blinking LED on GPIO %d...\n", GPIO_PIN);

    while (1) {
        // Allumer
        data.values[0] = 1;
        ioctl(req.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
        sleep(1);

        // Éteindre
        data.values[0] = 0;
        ioctl(req.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
        sleep(1);
    }

    close(req.fd);
    close(fd);
    return 0;
}

← Volver a la ficha