/** @file io_pins.h * * GPIO-Operationen: Pin-Definitionen * * GPIO-Pin-Paerchen als Einzel-Makro * Mit diesen Abkuerzungen/Mappings kann in Hardware-Config-Dateien leichter nach Pin-Namen * gesucht werden. * * Schema: * PA0 -> GPIOA, GPIO_Pin_0 * * $Date: 2020-02-27 12:09:23 +0100 (Do, 27 Feb 2020) $ * $Revision: 1240 $ * * @date 27.07.2019 @author Nicolas */ #ifndef IO_PINS_H #define IO_PINS_H #include "io.h" #if !defined( static_inline ) && !defined( __ASSEMBLER__ ) #define static_inline static inline __attribute__((always_inline)) #endif /** Dummy: Kein Pin Alle GPIO-Funktionen mit Pin 0x0 haben keine Aussenwirkung */ #define NO_PIN GPIOA, 0x0 /** GPIO */ #define PA0 GPIOA, GPIO_Pin_0 /** GPIO */ #define PA1 GPIOA, GPIO_Pin_1 /** GPIO */ #define PA2 GPIOA, GPIO_Pin_2 /** GPIO */ #define PA3 GPIOA, GPIO_Pin_3 /** GPIO */ #define PA4 GPIOA, GPIO_Pin_4 /** GPIO */ #define PA5 GPIOA, GPIO_Pin_5 /** GPIO */ #define PA6 GPIOA, GPIO_Pin_6 /** GPIO */ #define PA7 GPIOA, GPIO_Pin_7 /** GPIO */ #define PA8 GPIOA, GPIO_Pin_8 /** GPIO */ #define PA9 GPIOA, GPIO_Pin_9 /** GPIO */ #define PA10 GPIOA, GPIO_Pin_10 /** GPIO */ #define PA11 GPIOA, GPIO_Pin_11 /** GPIO */ #define PA12 GPIOA, GPIO_Pin_12 /** GPIO */ #define PA13 GPIOA, GPIO_Pin_13 /** GPIO */ #define PA14 GPIOA, GPIO_Pin_14 /** GPIO */ #define PA15 GPIOA, GPIO_Pin_15 /** GPIO */ #define PB0 GPIOB, GPIO_Pin_0 /** GPIO */ #define PB1 GPIOB, GPIO_Pin_1 /** GPIO */ #define PB2 GPIOB, GPIO_Pin_2 /** GPIO */ #define PB3 GPIOB, GPIO_Pin_3 /** GPIO */ #define PB4 GPIOB, GPIO_Pin_4 /** GPIO */ #define PB5 GPIOB, GPIO_Pin_5 /** GPIO */ #define PB6 GPIOB, GPIO_Pin_6 /** GPIO */ #define PB7 GPIOB, GPIO_Pin_7 /** GPIO */ #define PB8 GPIOB, GPIO_Pin_8 /** GPIO */ #define PB9 GPIOB, GPIO_Pin_9 /** GPIO */ #define PB10 GPIOB, GPIO_Pin_10 /** GPIO */ #define PB11 GPIOB, GPIO_Pin_11 /** GPIO */ #define PB12 GPIOB, GPIO_Pin_12 /** GPIO */ #define PB13 GPIOB, GPIO_Pin_13 /** GPIO */ #define PB14 GPIOB, GPIO_Pin_14 /** GPIO */ #define PB15 GPIOB, GPIO_Pin_15 /** GPIO */ #define PC0 GPIOC, GPIO_Pin_0 /** GPIO */ #define PC1 GPIOC, GPIO_Pin_1 /** GPIO */ #define PC2 GPIOC, GPIO_Pin_2 /** GPIO */ #define PC3 GPIOC, GPIO_Pin_3 /** GPIO */ #define PC4 GPIOC, GPIO_Pin_4 /** GPIO */ #define PC5 GPIOC, GPIO_Pin_5 /** GPIO */ #define PC6 GPIOC, GPIO_Pin_6 /** GPIO */ #define PC7 GPIOC, GPIO_Pin_7 /** GPIO */ #define PC8 GPIOC, GPIO_Pin_8 /** GPIO */ #define PC9 GPIOC, GPIO_Pin_9 /** GPIO */ #define PC10 GPIOC, GPIO_Pin_10 /** GPIO */ #define PC11 GPIOC, GPIO_Pin_11 /** GPIO */ #define PC12 GPIOC, GPIO_Pin_12 /** GPIO */ #define PC13 GPIOC, GPIO_Pin_13 /** GPIO */ #define PC14 GPIOC, GPIO_Pin_14 /** GPIO */ #define PC15 GPIOC, GPIO_Pin_15 /** GPIO */ #define PD0 GPIOD, GPIO_Pin_0 /** GPIO */ #define PD1 GPIOD, GPIO_Pin_1 /** GPIO */ #define PD2 GPIOD, GPIO_Pin_2 /** GPIO */ #define PD3 GPIOD, GPIO_Pin_3 /** GPIO */ #define PD4 GPIOD, GPIO_Pin_4 /** GPIO */ #define PD5 GPIOD, GPIO_Pin_5 /** GPIO */ #define PD6 GPIOD, GPIO_Pin_6 /** GPIO */ #define PD7 GPIOD, GPIO_Pin_7 /** GPIO */ #define PD8 GPIOD, GPIO_Pin_8 /** GPIO */ #define PD9 GPIOD, GPIO_Pin_9 /** GPIO */ #define PD10 GPIOD, GPIO_Pin_10 /** GPIO */ #define PD11 GPIOD, GPIO_Pin_11 /** GPIO */ #define PD12 GPIOD, GPIO_Pin_12 /** GPIO */ #define PD13 GPIOD, GPIO_Pin_13 /** GPIO */ #define PD14 GPIOD, GPIO_Pin_14 /** GPIO */ #define PD15 GPIOD, GPIO_Pin_15 #ifndef(__ASSEMBLER__) /** Aus Makros wie PB0: GPIOB, GPIO_Pin_0 wieder den Port GPIOB zurueckgewinnen * @param[in] GPIOx, Pin: GPIO-Pin-Paerchen * @return GPIO */ static_inline GPIO_t * gpio_port(GPIO_t * const GPIOx, const IOPin_t Pin) { (void) Pin; return GPIOx; } /** Aus Makros wie PB0: GPIOB, GPIO_Pin_0 wieder den Pin GPIO_Pin_0 zurueckgewinnen * @param[in] GPIOx, Pin: GPIO-Pin-Paerchen * @return Pin */ static_inline IOPin_t gpio_pin(GPIO_t * const GPIOx, const IOPin_t Pin) { (void) GPIOx; return Pin; } #endif /** Hilfs-Makro: Erstes Argument */ #define _arg1(a,b) a /** Hilfs-Makro: Zweites Argument */ #define _arg2(a,b) b /** Aus Makros wie PB0: GPIOB, GPIO_Pin_0 wieder GPIOB zurueckgewinnen * (Makro-Version der Funktione gpio_port() ) */ #define GPIO_PORT(ab) _arg1(ab) /** Aus Makros wie PB0: GPIOB, GPIO_Pin_0 wieder GPIO_Pin_0 zurueckgewinnen * (Makro-Version der Funktione gpio_pin() ) */ #define GPIO_PIN(ab) _arg2(ab) #endif