From 0f279ff9ec677486244e288e8c6bb55f47b0f373 Mon Sep 17 00:00:00 2001 From: Alexander Heldt Date: Wed, 1 Jan 2025 12:22:09 +0100 Subject: [PATCH] Add `PORT` macro And use it in the `PIN` macro --- src/gpio.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gpio.h b/src/gpio.h index 3bc669e..bad0e48 100644 --- a/src/gpio.h +++ b/src/gpio.h @@ -21,8 +21,10 @@ struct gpio { #define GPIO_PORT_OFFSET (0x400U) #define GPIO(port) ((struct gpio*)(uintptr_t)(GPIO_BASE_ADDR + (GPIO_PORT_OFFSET * port))) +// Create a 8bit number from a port +#define PORT(port) (((port) - 'A') << 8) // Create a 16bit number from a port and pin -#define PIN(port, num) ((((port) - 'A') << 8) | num) +#define PIN(port, num) (PORT(port) | num) // get the lower byte from a PIN #define PINNUM(pin) (pin & 0b1111) // get the upper byte from a PIN