diff options
author | Matthew Sotoudeh <matthew@masot.net> | 2024-02-25 17:16:55 -0800 |
---|---|---|
committer | Matthew Sotoudeh <matthew@masot.net> | 2024-02-25 17:16:55 -0800 |
commit | b78d16cd5580117254aa1c03e06204f05bdf094f (patch) | |
tree | 26474783de474329cfba89c98a79cf9fe63ef14f | |
parent | b9c2cccd8baa60533ce82c59ef5e084b847bf336 (diff) |
minor
-rw-r--r-- | blink/blink.c | 4 | ||||
-rw-r--r-- | blink/gpio.c | 31 | ||||
-rw-r--r-- | blink/gpio.h | 6 |
3 files changed, 31 insertions, 10 deletions
diff --git a/blink/blink.c b/blink/blink.c index b59c950..260fb1f 100644 --- a/blink/blink.c +++ b/blink/blink.c @@ -13,8 +13,8 @@ int notmain() { size_t pin = 29; gpio_set_function(pin, GPIO_GPIO); - gpio_set_input(pin, 0); - gpio_set_output(pin, 1); + gpio_set_output(pin); + gpio_set_on(pin); return 0; } diff --git a/blink/gpio.c b/blink/gpio.c index 39c5d51..ea4e66b 100644 --- a/blink/gpio.c +++ b/blink/gpio.c @@ -34,22 +34,41 @@ enum gpio_io_mode { IO_MODE_CACHE, }; -void gpio_set_input(gpio_t pin, bool enable) { +void gpio_set_on(gpio_t pin) { struct gpio_config x = get32_type(struct gpio_config, GPIO_CONFIG + pin); - x.io_mode = IO_MODE_SET_CLEAR; - x.input_enable = enable; + x.output_value = 1; put32_type(struct gpio_config, GPIO_CONFIG + pin, x); } -void gpio_set_output(gpio_t pin, bool enable) { +void gpio_set_off(gpio_t pin) { struct gpio_config x = get32_type(struct gpio_config, GPIO_CONFIG + pin); - x.io_mode = IO_MODE_SET_CLEAR; - x.output_enable = enable; + x.output_value = 0; + put32_type(struct gpio_config, GPIO_CONFIG + pin, x); +} + +void gpio_set_input(gpio_t pin) { + struct gpio_config x = get32_type(struct gpio_config, GPIO_CONFIG + pin); + x.output_enable = 0; + x.input_enable = 1; + put32_type(struct gpio_config, GPIO_CONFIG + pin, x); +} + +void gpio_set_output(gpio_t pin) { + struct gpio_config x = get32_type(struct gpio_config, GPIO_CONFIG + pin); + x.output_enable = 1; + x.input_enable = 0; put32_type(struct gpio_config, GPIO_CONFIG + pin, x); } void gpio_set_function(gpio_t pin, enum gpio_alternate_function function) { struct gpio_config x = get32_type(struct gpio_config, GPIO_CONFIG + pin); + x.input_enable = 0; + x.schmitt_trigger_enable = 1; + x.drive_strength = 3; + x.pullup_enable = 0; + x.pulldown_enable = 0; + x.output_enable = 0; x.alternate_function = function; + x.io_mode = IO_MODE_NORMAL; put32_type(struct gpio_config, GPIO_CONFIG + pin, x); } diff --git a/blink/gpio.h b/blink/gpio.h index 1f0d651..69a2d0e 100644 --- a/blink/gpio.h +++ b/blink/gpio.h @@ -32,6 +32,8 @@ enum gpio_alternate_function { typedef size_t gpio_t; -void gpio_set_input(gpio_t pin, bool enable); -void gpio_set_output(gpio_t pin, bool enable); +void gpio_set_on(gpio_t pin); +void gpio_set_off(gpio_t pin); +void gpio_set_input(gpio_t pin); +void gpio_set_output(gpio_t pin); void gpio_set_function(gpio_t pin, enum gpio_alternate_function function); |