...
Code Block | ||||
---|---|---|---|---|
| ||||
// Blink an LED
#include <stdbool.h>
#include "gpio.h"
#include "interrupt.h"
#include "log.h"
#include "soft_timer.h"
#include "wait.h"
#define BLINK_LED_TIMEOUT_SECS 1
// Timeout callback
static void prv_blink_timeout(SoftTimerID timer_id, void *context) {
GPIOAddress *led = context;
gpio_toggle_state(led);
LOG_DEBUG("Toggling LED\n");
// Schedule another timer - this creates a periodic timer
soft_timer_start_seconds(BLINK_LED_TIMEOUT_SECS, prv_blink_timeout, &led, NULL);
}
int main(void) {
LOG_DEBUG("Hello World!\n");
// Initialize our modules
gpio_init();
interrupt_init();
soft_timer_init();
// Set up the pin
GPIOAddress led = {
.port = GPIO_PORT_C, //
.pin = 9, //
};
GPIOSettings gpio_settings = {
.direction = GPIO_DIR_OUT, //
.state = GPIO_STATE_LOW, //
};
gpio_init_pin(&led, &gpio_settings);
// Begin a timer
soft_timer_start_seconds(BLINK_LED_TIMEOUT_SECS, prv_blink_timeout, &led, NULL);
// Infinite loop
while (true) {
// Wait for interrupts
wait();
}
return 0;
} |
...