int main() { gpio *gpio_led; gpio_led = libsoc_gpio_request(GPIO_LED, LS_SHARED); if ((gpio_led == NULL)) { fprintf(stderr, "Unable to request GPIOs\n"); goto fail; } libsoc_gpio_set_direction(gpio_led, OUTPUT); if ((libsoc_gpio_get_direction(gpio_led) != OUTPUT)) { fprintf(stderr, "Unable to set led/btn directions\n"); goto fail; } while (1) { libsoc_gpio_set_level(gpio_led, 1); usleep(500000); libsoc_gpio_set_level(gpio_led, 0); usleep(500000); } fail: if (gpio_led) libsoc_gpio_free(gpio_led); return EXIT_SUCCESS; }
int main(void) { // Enable debug output libsoc_set_debug(1); // Request gpios gpio_output = libsoc_gpio_request(GPIO_OUTPUT, LS_SHARED); gpio_input = libsoc_gpio_request(GPIO_INPUT, LS_SHARED); // Set direction to OUTPUT libsoc_gpio_set_direction(gpio_output, OUTPUT); // Set direction to INPUT libsoc_gpio_set_direction(gpio_input, INPUT); // Set edge to BOTH libsoc_gpio_set_edge(gpio_input, BOTH); // Setup callback libsoc_gpio_callback_interrupt(gpio_input, &callback_test, (void*) &interrupt_count); printf("Push the button...\n"); // Disaple debug output so the code will respond faster libsoc_set_debug(0); sleep(10); libsoc_set_debug(1); // Cancel the callback on interrupt libsoc_gpio_callback_interrupt_cancel(gpio_input); //If gpio_request was successful if (gpio_input) { // Free gpio request memory libsoc_gpio_free(gpio_input); } if (gpio_output) { // Free gpio request memory libsoc_gpio_free(gpio_output); } return EXIT_SUCCESS; }