runtime: Implement GPIO output

Now we can actually blink a LED!
This commit is contained in:
Ayke van Laethem
2018-04-27 01:29:13 +02:00
parent 5bbd41e9fb
commit 3a4663150e
5 changed files with 66 additions and 4 deletions
+4
View File
@@ -0,0 +1,4 @@
#pragma once
#define NRFX_ASSERT(expression) do { bool res = expression; (void)res; } while (0)
+16
View File
@@ -1,7 +1,9 @@
#include "hal/nrf_gpio.h"
#include "hal/nrf_uart.h"
#include "nrf.h"
#include "runtime.h"
#include "runtime_nrf.h"
#include <string.h>
void uart_init(uint32_t pin_tx) {
@@ -46,6 +48,20 @@ void RTC0_IRQHandler() {
rtc_wakeup = true;
}
void gpio_cfg(uint32_t pin, gpio_mode_t mode) {
nrf_gpio_cfg(
pin,
mode == GPIO_INPUT ? NRF_GPIO_PIN_DIR_INPUT : NRF_GPIO_PIN_DIR_OUTPUT,
mode == GPIO_INPUT ? NRF_GPIO_PIN_INPUT_CONNECT : NRF_GPIO_PIN_INPUT_DISCONNECT,
NRF_GPIO_PIN_NOPULL,
NRF_GPIO_PIN_S0S1,
NRF_GPIO_PIN_NOSENSE);
}
void gpio_set(uint32_t pin, bool high) {
nrf_gpio_pin_write(pin, high);
}
void _start() {
main();
}
+9
View File
@@ -2,9 +2,18 @@
#pragma once
#include <stdint.h>
#include <stdbool.h>
void uart_init(uint32_t pin_tx);
void uart_send(uint8_t c);
void rtc_init();
void rtc_sleep(uint32_t ticks);
typedef enum {
GPIO_INPUT,
GPIO_OUTPUT,
} gpio_mode_t;
void gpio_cfg(uint32_t pin, gpio_mode_t mode);
void gpio_set(uint32_t pin, bool high);