global: add GPIO port and pin utilities

This commit is contained in:
King Kévin 2019-06-18 13:46:57 +02:00
parent 51d4d931ac
commit 67baf340fe
1 changed files with 253 additions and 13 deletions

266
global.h
View File

@ -111,10 +111,244 @@
* @note used when the value is calculated or isn't a value
* @{
*/
/** get GPIO based on GPIO identifier */
/** get GPIO based on GPIO port or pin identifier */
#define GPIO(x) CAT2(GPIO,x)
/** get GPIO port identifier based on GPIO port and pin identifier */
#define GPIO_PORT_ID(x) CAT2(x,_PORT)
/** get GPIO port based on GPIO port and pin identifier */
#define GPIO_PORT(x) GPIO(GPIO_PORT_ID(x))
#define PA0_PORT A /**< GPIO port pin A0 is on port A */
#define PA1_PORT A /**< GPIO port pin A1 is on port A */
#define PA2_PORT A /**< GPIO port pin A2 is on port A */
#define PA3_PORT A /**< GPIO port pin A3 is on port A */
#define PA4_PORT A /**< GPIO port pin A4 is on port A */
#define PA5_PORT A /**< GPIO port pin A5 is on port A */
#define PA6_PORT A /**< GPIO port pin A6 is on port A */
#define PA7_PORT A /**< GPIO port pin A7 is on port A */
#define PA8_PORT A /**< GPIO port pin A8 is on port A */
#define PA9_PORT A /**< GPIO port pin A9 is on port A */
#define PA10_PORT A /**< GPIO port pin A10 is on port A */
#define PA11_PORT A /**< GPIO port pin A11 is on port A */
#define PA12_PORT A /**< GPIO port pin A12 is on port A */
#define PA13_PORT A /**< GPIO port pin A13 is on port A */
#define PA14_PORT A /**< GPIO port pin A14 is on port A */
#define PA15_PORT A /**< GPIO port pin A15 is on port A */
#define PB0_PORT B /**< GPIO port pin B0 is on port B */
#define PB1_PORT B /**< GPIO port pin B1 is on port B */
#define PB2_PORT B /**< GPIO port pin B2 is on port B */
#define PB3_PORT B /**< GPIO port pin B3 is on port B */
#define PB4_PORT B /**< GPIO port pin B4 is on port B */
#define PB5_PORT B /**< GPIO port pin B5 is on port B */
#define PB6_PORT B /**< GPIO port pin B6 is on port B */
#define PB7_PORT B /**< GPIO port pin B7 is on port B */
#define PB8_PORT B /**< GPIO port pin B8 is on port B */
#define PB9_PORT B /**< GPIO port pin B9 is on port B */
#define PB10_PORT B /**< GPIO port pin B10 is on port B */
#define PB11_PORT B /**< GPIO port pin B11 is on port B */
#define PB12_PORT B /**< GPIO port pin B12 is on port B */
#define PB13_PORT B /**< GPIO port pin B13 is on port B */
#define PB14_PORT B /**< GPIO port pin B14 is on port B */
#define PB15_PORT B /**< GPIO port pin B15 is on port B */
#define PC0_PORT C /**< GPIO port pin C0 is on port C */
#define PC1_PORT C /**< GPIO port pin C1 is on port C */
#define PC2_PORT C /**< GPIO port pin C2 is on port C */
#define PC3_PORT C /**< GPIO port pin C3 is on port C */
#define PC4_PORT C /**< GPIO port pin C4 is on port C */
#define PC5_PORT C /**< GPIO port pin C5 is on port C */
#define PC6_PORT C /**< GPIO port pin C6 is on port C */
#define PC7_PORT C /**< GPIO port pin C7 is on port C */
#define PC8_PORT C /**< GPIO port pin C8 is on port C */
#define PC9_PORT C /**< GPIO port pin C9 is on port C */
#define PC10_PORT C /**< GPIO port pin C10 is on port C */
#define PC11_PORT C /**< GPIO port pin C11 is on port C */
#define PC12_PORT C /**< GPIO port pin C12 is on port C */
#define PC13_PORT C /**< GPIO port pin C13 is on port C */
#define PC14_PORT C /**< GPIO port pin C14 is on port C */
#define PC15_PORT C /**< GPIO port pin C15 is on port C */
#define PD0_PORT D /**< GPIO port pin D0 is on port D */
#define PD1_PORT D /**< GPIO port pin D1 is on port D */
#define PD2_PORT D /**< GPIO port pin D2 is on port D */
#define PD3_PORT D /**< GPIO port pin D3 is on port D */
#define PD4_PORT D /**< GPIO port pin D4 is on port D */
#define PD5_PORT D /**< GPIO port pin D5 is on port D */
#define PD6_PORT D /**< GPIO port pin D6 is on port D */
#define PD7_PORT D /**< GPIO port pin D7 is on port D */
#define PD8_PORT D /**< GPIO port pin D8 is on port D */
#define PD9_PORT D /**< GPIO port pin D9 is on port D */
#define PD10_PORT D /**< GPIO port pin D10 is on port D */
#define PD11_PORT D /**< GPIO port pin D11 is on port D */
#define PD12_PORT D /**< GPIO port pin D12 is on port D */
#define PD13_PORT D /**< GPIO port pin D13 is on port D */
#define PD14_PORT D /**< GPIO port pin D14 is on port D */
#define PD15_PORT D /**< GPIO port pin D15 is on port D */
#define PE0_PORT E /**< GPIO port pin E0 is on port E */
#define PE1_PORT E /**< GPIO port pin E1 is on port E */
#define PE2_PORT E /**< GPIO port pin E2 is on port E */
#define PE3_PORT E /**< GPIO port pin E3 is on port E */
#define PE4_PORT E /**< GPIO port pin E4 is on port E */
#define PE5_PORT E /**< GPIO port pin E5 is on port E */
#define PE6_PORT E /**< GPIO port pin E6 is on port E */
#define PE7_PORT E /**< GPIO port pin E7 is on port E */
#define PE8_PORT E /**< GPIO port pin E8 is on port E */
#define PE9_PORT E /**< GPIO port pin E9 is on port E */
#define PE10_PORT E /**< GPIO port pin E10 is on port E */
#define PE11_PORT E /**< GPIO port pin E11 is on port E */
#define PE12_PORT E /**< GPIO port pin E12 is on port E */
#define PE13_PORT E /**< GPIO port pin E13 is on port E */
#define PE14_PORT E /**< GPIO port pin E14 is on port E */
#define PE15_PORT E /**< GPIO port pin E15 is on port E */
#define PF0_PORT F /**< GPIO port pin F0 is on port F */
#define PF1_PORT F /**< GPIO port pin F1 is on port F */
#define PF2_PORT F /**< GPIO port pin F2 is on port F */
#define PF3_PORT F /**< GPIO port pin F3 is on port F */
#define PF4_PORT F /**< GPIO port pin F4 is on port F */
#define PF5_PORT F /**< GPIO port pin F5 is on port F */
#define PF6_PORT F /**< GPIO port pin F6 is on port F */
#define PF7_PORT F /**< GPIO port pin F7 is on port F */
#define PF8_PORT F /**< GPIO port pin F8 is on port F */
#define PF9_PORT F /**< GPIO port pin F9 is on port F */
#define PF10_PORT F /**< GPIO port pin F10 is on port F */
#define PF11_PORT F /**< GPIO port pin F11 is on port F */
#define PF12_PORT F /**< GPIO port pin F12 is on port F */
#define PF13_PORT F /**< GPIO port pin F13 is on port F */
#define PF14_PORT F /**< GPIO port pin F14 is on port F */
#define PF15_PORT F /**< GPIO port pin F15 is on port F */
#define PG0_PORT G /**< GPIO port pin G0 is on port G */
#define PG1_PORT G /**< GPIO port pin G1 is on port G */
#define PG2_PORT G /**< GPIO port pin G2 is on port G */
#define PG3_PORT G /**< GPIO port pin G3 is on port G */
#define PG4_PORT G /**< GPIO port pin G4 is on port G */
#define PG5_PORT G /**< GPIO port pin G5 is on port G */
#define PG6_PORT G /**< GPIO port pin G6 is on port G */
#define PG7_PORT G /**< GPIO port pin G7 is on port G */
#define PG8_PORT G /**< GPIO port pin G8 is on port G */
#define PG9_PORT G /**< GPIO port pin G9 is on port G */
#define PG10_PORT G /**< GPIO port pin G10 is on port G */
#define PG11_PORT G /**< GPIO port pin G11 is on port G */
#define PG12_PORT G /**< GPIO port pin G12 is on port G */
#define PG13_PORT G /**< GPIO port pin G13 is on port G */
#define PG14_PORT G /**< GPIO port pin G14 is on port G */
#define PG15_PORT G /**< GPIO port pin G15 is on port G */
/** get GPIO port identifier based on GPIO port and pin identifier */
#define GPIO_PIN_ID(x) CAT2(x,_PIN)
/** get GPIO pin based on GPIO port and pin identifier */
#define GPIO_PIN(x) GPIO(GPIO_PIN_ID(x))
#define PA0_PIN 0 /**< GPIO port pin A0 is on pin 0 */
#define PA1_PIN 1 /**< GPIO port pin A1 is on pin 1 */
#define PA2_PIN 2 /**< GPIO port pin A2 is on pin 2 */
#define PA3_PIN 3 /**< GPIO port pin A3 is on pin 3 */
#define PA4_PIN 4 /**< GPIO port pin A4 is on pin 4 */
#define PA5_PIN 5 /**< GPIO port pin A5 is on pin 5 */
#define PA6_PIN 6 /**< GPIO port pin A6 is on pin 6 */
#define PA7_PIN 7 /**< GPIO port pin A7 is on pin 7 */
#define PA8_PIN 8 /**< GPIO port pin A8 is on pin 8 */
#define PA9_PIN 9 /**< GPIO port pin A9 is on pin 9 */
#define PA10_PIN 10 /**< GPIO port pin A10 is on pin 10 */
#define PA11_PIN 11 /**< GPIO port pin A11 is on pin 11 */
#define PA12_PIN 12 /**< GPIO port pin A12 is on pin 12 */
#define PA13_PIN 13 /**< GPIO port pin A13 is on pin 13 */
#define PA14_PIN 14 /**< GPIO port pin A14 is on pin 14 */
#define PA15_PIN 15 /**< GPIO port pin A15 is on pin 15 */
#define PB0_PIN 0 /**< GPIO port pin B0 is on pin 0 */
#define PB1_PIN 1 /**< GPIO port pin B1 is on pin 1 */
#define PB2_PIN 2 /**< GPIO port pin B2 is on pin 2 */
#define PB3_PIN 3 /**< GPIO port pin B3 is on pin 3 */
#define PB4_PIN 4 /**< GPIO port pin B4 is on pin 4 */
#define PB5_PIN 5 /**< GPIO port pin B5 is on pin 5 */
#define PB6_PIN 6 /**< GPIO port pin B6 is on pin 6 */
#define PB7_PIN 7 /**< GPIO port pin B7 is on pin 7 */
#define PB8_PIN 8 /**< GPIO port pin B8 is on pin 8 */
#define PB9_PIN 9 /**< GPIO port pin B9 is on pin 9 */
#define PB10_PIN 10 /**< GPIO port pin B10 is on pin 10 */
#define PB11_PIN 11 /**< GPIO port pin B11 is on pin 11 */
#define PB12_PIN 12 /**< GPIO port pin B12 is on pin 12 */
#define PB13_PIN 13 /**< GPIO port pin B13 is on pin 13 */
#define PB14_PIN 14 /**< GPIO port pin B14 is on pin 14 */
#define PB15_PIN 15 /**< GPIO port pin B15 is on pin 15 */
#define PC0_PIN 0 /**< GPIO port pin C0 is on pin 0 */
#define PC1_PIN 1 /**< GPIO port pin C1 is on pin 1 */
#define PC2_PIN 2 /**< GPIO port pin C2 is on pin 2 */
#define PC3_PIN 3 /**< GPIO port pin C3 is on pin 3 */
#define PC4_PIN 4 /**< GPIO port pin C4 is on pin 4 */
#define PC5_PIN 5 /**< GPIO port pin C5 is on pin 5 */
#define PC6_PIN 6 /**< GPIO port pin C6 is on pin 6 */
#define PC7_PIN 7 /**< GPIO port pin C7 is on pin 7 */
#define PC8_PIN 8 /**< GPIO port pin C8 is on pin 8 */
#define PC9_PIN 9 /**< GPIO port pin C9 is on pin 9 */
#define PC10_PIN 10 /**< GPIO port pin C10 is on pin 10 */
#define PC11_PIN 11 /**< GPIO port pin C11 is on pin 11 */
#define PC12_PIN 12 /**< GPIO port pin C12 is on pin 12 */
#define PC13_PIN 13 /**< GPIO port pin C13 is on pin 13 */
#define PC14_PIN 14 /**< GPIO port pin C14 is on pin 14 */
#define PC15_PIN 15 /**< GPIO port pin C15 is on pin 15 */
#define PD0_PIN 0 /**< GPIO port pin D0 is on pin 0 */
#define PD1_PIN 1 /**< GPIO port pin D1 is on pin 1 */
#define PD2_PIN 2 /**< GPIO port pin D2 is on pin 2 */
#define PD3_PIN 3 /**< GPIO port pin D3 is on pin 3 */
#define PD4_PIN 4 /**< GPIO port pin D4 is on pin 4 */
#define PD5_PIN 5 /**< GPIO port pin D5 is on pin 5 */
#define PD6_PIN 6 /**< GPIO port pin D6 is on pin 6 */
#define PD7_PIN 7 /**< GPIO port pin D7 is on pin 7 */
#define PD8_PIN 8 /**< GPIO port pin D8 is on pin 8 */
#define PD9_PIN 9 /**< GPIO port pin D9 is on pin 9 */
#define PD10_PIN 10 /**< GPIO port pin D10 is on pin 10 */
#define PD11_PIN 11 /**< GPIO port pin D11 is on pin 11 */
#define PD12_PIN 12 /**< GPIO port pin D12 is on pin 12 */
#define PD13_PIN 13 /**< GPIO port pin D13 is on pin 13 */
#define PD14_PIN 14 /**< GPIO port pin D14 is on pin 14 */
#define PD15_PIN 15 /**< GPIO port pin D15 is on pin 15 */
#define PE0_PIN 0 /**< GPIO port pin E0 is on pin 0 */
#define PE1_PIN 1 /**< GPIO port pin E1 is on pin 1 */
#define PE2_PIN 2 /**< GPIO port pin E2 is on pin 2 */
#define PE3_PIN 3 /**< GPIO port pin E3 is on pin 3 */
#define PE4_PIN 4 /**< GPIO port pin E4 is on pin 4 */
#define PE5_PIN 5 /**< GPIO port pin E5 is on pin 5 */
#define PE6_PIN 6 /**< GPIO port pin E6 is on pin 6 */
#define PE7_PIN 7 /**< GPIO port pin E7 is on pin 7 */
#define PE8_PIN 8 /**< GPIO port pin E8 is on pin 8 */
#define PE9_PIN 9 /**< GPIO port pin E9 is on pin 9 */
#define PE10_PIN 10 /**< GPIO port pin E10 is on pin 10 */
#define PE11_PIN 11 /**< GPIO port pin E11 is on pin 11 */
#define PE12_PIN 12 /**< GPIO port pin E12 is on pin 12 */
#define PE13_PIN 13 /**< GPIO port pin E13 is on pin 13 */
#define PE14_PIN 14 /**< GPIO port pin E14 is on pin 14 */
#define PE15_PIN 15 /**< GPIO port pin E15 is on pin 15 */
#define PF0_PIN 0 /**< GPIO port pin F0 is on pin 0 */
#define PF1_PIN 1 /**< GPIO port pin F1 is on pin 1 */
#define PF2_PIN 2 /**< GPIO port pin F2 is on pin 2 */
#define PF3_PIN 3 /**< GPIO port pin F3 is on pin 3 */
#define PF4_PIN 4 /**< GPIO port pin F4 is on pin 4 */
#define PF5_PIN 5 /**< GPIO port pin F5 is on pin 5 */
#define PF6_PIN 6 /**< GPIO port pin F6 is on pin 6 */
#define PF7_PIN 7 /**< GPIO port pin F7 is on pin 7 */
#define PF8_PIN 8 /**< GPIO port pin F8 is on pin 8 */
#define PF9_PIN 9 /**< GPIO port pin F9 is on pin 9 */
#define PF10_PIN 10 /**< GPIO port pin F10 is on pin 10 */
#define PF11_PIN 11 /**< GPIO port pin F11 is on pin 11 */
#define PF12_PIN 12 /**< GPIO port pin F12 is on pin 12 */
#define PF13_PIN 13 /**< GPIO port pin F13 is on pin 13 */
#define PF14_PIN 14 /**< GPIO port pin F14 is on pin 14 */
#define PF15_PIN 15 /**< GPIO port pin F15 is on pin 15 */
#define PG0_PIN 0 /**< GPIO port pin G0 is on pin 0 */
#define PG1_PIN 1 /**< GPIO port pin G1 is on pin 1 */
#define PG2_PIN 2 /**< GPIO port pin G2 is on pin 2 */
#define PG3_PIN 3 /**< GPIO port pin G3 is on pin 3 */
#define PG4_PIN 4 /**< GPIO port pin G4 is on pin 4 */
#define PG5_PIN 5 /**< GPIO port pin G5 is on pin 5 */
#define PG6_PIN 6 /**< GPIO port pin G6 is on pin 6 */
#define PG7_PIN 7 /**< GPIO port pin G7 is on pin 7 */
#define PG8_PIN 8 /**< GPIO port pin G8 is on pin 8 */
#define PG9_PIN 9 /**< GPIO port pin G9 is on pin 9 */
#define PG10_PIN 10 /**< GPIO port pin G10 is on pin 10 */
#define PG11_PIN 11 /**< GPIO port pin G11 is on pin 11 */
#define PG12_PIN 12 /**< GPIO port pin G12 is on pin 12 */
#define PG13_PIN 13 /**< GPIO port pin G13 is on pin 13 */
#define PG14_PIN 14 /**< GPIO port pin G14 is on pin 14 */
#define PG15_PIN 15 /**< GPIO port pin G15 is on pin 15 */
/** get RCC for GPIO based on GPIO identifier */
#define RCC_GPIO(x) CAT2(RCC_GPIO,x)
/** get RCC for GPIO based on GPIO identifier */
#define GPIO_RCC(x) RCC_GPIO(GPIO_PORT_ID(x))
/** get TIM based on TIM identifier */
#define TIM(x) CAT2(TIM,x)
/** get RCC for timer based on TIM identifier */
@ -166,8 +400,12 @@
#define TIM_CCR(x,y) CAT2(TIM_CCR,y)(TIM(x))
/** get external interrupt based on pin identifier */
#define EXTI(x) CAT2(EXTI,x)
/** get NVIC IRQ for external interrupt base on external interrupt/pin */
/** get external interrupt based on GPIO port and pin identifier */
#define GPIO_EXTI(x) EXTI(GPIO_PIN_ID(x))
/** get NVIC IRQ for external interrupt based on external interrupt/pin */
#define NVIC_EXTI_IRQ(x) CAT3(NVIC_EXTI,x,_IRQ)
/** get NVIC IRQ for external interrupt based on GPIO port and pin identifier */
#define GPIO_NVIC_EXTI_IRQ(x) NVIC_EXTI_IRQ(GPIO_PIN_ID(x))
#define NVIC_EXTI5_IRQ NVIC_EXTI9_5_IRQ /**< IRQ for line 9 to 5 for pin 5 */
#define NVIC_EXTI6_IRQ NVIC_EXTI9_5_IRQ /**< IRQ for line 9 to 5 for pin 6 */
#define NVIC_EXTI7_IRQ NVIC_EXTI9_5_IRQ /**< IRQ for line 9 to 5 for pin 7 */
@ -181,17 +419,19 @@
#define NVIC_EXTI15_IRQ NVIC_EXTI15_10_IRQ /**< IRQ for line 15 to 10 for pin 15 */
/** get interrupt service routine for timer base on external interrupt/pin */
#define EXTI_ISR(x) CAT3(exti,x,_isr)
#define exti5_isr exti9_5_isr /**< isr for line 9 to 5 for pin 5 */
#define exti6_isr exti9_5_isr /**< isr for line 9 to 5 for pin 6 */
#define exti7_isr exti9_5_isr /**< isr for line 9 to 5 for pin 7 */
#define exti8_isr exti9_5_isr /**< isr for line 9 to 5 for pin 8 */
#define exti9_isr exti9_5_isr /**< isr for line 9 to 5 for pin 9 */
#define exti10_isr exti15_10_isr /**< isr for line 15 to 10 for pin 10 */
#define exti11_isr exti15_10_isr /**< isr for line 15 to 10 for pin 11 */
#define exti12_isr exti15_10_isr /**< isr for line 15 to 10 for pin 12 */
#define exti13_isr exti15_10_isr /**< isr for line 15 to 10 for pin 13 */
#define exti14_isr exti15_10_isr /**< isr for line 15 to 10 for pin 14 */
#define exti15_isr exti15_10_isr /**< isr for line 15 to 10 for pin 15 */
/** get external interrupt based on GPIO port and pin identifier */
#define GPIO_EXTI_ISR(x) EXTI_ISR(GPIO_PIN_ID(x))
#define exti5_isr exti9_5_isr /**< ISR for line 9 to 5 for pin 5 */
#define exti6_isr exti9_5_isr /**< ISR for line 9 to 5 for pin 6 */
#define exti7_isr exti9_5_isr /**< ISR for line 9 to 5 for pin 7 */
#define exti8_isr exti9_5_isr /**< ISR for line 9 to 5 for pin 8 */
#define exti9_isr exti9_5_isr /**< ISR for line 9 to 5 for pin 9 */
#define exti10_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 10 */
#define exti11_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 11 */
#define exti12_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 12 */
#define exti13_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 13 */
#define exti14_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 14 */
#define exti15_isr exti15_10_isr /**< ISR for line 15 to 10 for pin 15 */
/** get USART based on USART identifier */
#define USART(x) CAT2(USART,x)
/** get RCC for USART based on USART identifier */