mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
cpu/stm32f1:board/iot-lab_M3: fix and cleanup for GPIO low level driver
This commit is contained in:
parent
c27e250de4
commit
19db6ded85
@ -112,7 +112,7 @@
|
||||
/**
|
||||
* @brief GPIO configuration
|
||||
*/
|
||||
#define GPIO_NUMOF 16
|
||||
#define GPIO_NUMOF 15
|
||||
#define GPIO_0_EN 1
|
||||
#define GPIO_1_EN 1
|
||||
#define GPIO_2_EN 1
|
||||
@ -128,139 +128,119 @@
|
||||
#define GPIO_12_EN 1
|
||||
#define GPIO_13_EN 1
|
||||
#define GPIO_14_EN 1
|
||||
#define GPIO_15_EN 0 /* not configured */
|
||||
#define GPIO_IRQ_PRIO 1
|
||||
|
||||
/* IRQ config */
|
||||
#define GPIO_IRQ_0 GPIO_0
|
||||
#define GPIO_IRQ_1 GPIO_1
|
||||
#define GPIO_IRQ_2 GPIO_0 /* not configured */
|
||||
#define GPIO_IRQ_3 GPIO_0 /* not configured */
|
||||
#define GPIO_IRQ_4 GPIO_2
|
||||
#define GPIO_IRQ_5 GPIO_3
|
||||
#define GPIO_IRQ_6 GPIO_4
|
||||
/**
|
||||
* @brief IRQ config
|
||||
*
|
||||
* These defines are used for the backmapping in the matching interrupt
|
||||
* service routines to call the correct callbacks.
|
||||
* GPIO_IRQ_x where x matches the value defined by GPIO_y_PIN
|
||||
*/
|
||||
#define GPIO_IRQ_1 GPIO_13
|
||||
#define GPIO_IRQ_2 GPIO_14
|
||||
#define GPIO_IRQ_3 GPIO_0
|
||||
#define GPIO_IRQ_4 GPIO_12
|
||||
#define GPIO_IRQ_5 GPIO_8
|
||||
#define GPIO_IRQ_6 GPIO_9
|
||||
#define GPIO_IRQ_7 GPIO_5
|
||||
#define GPIO_IRQ_8 GPIO_0 /* not configured */
|
||||
#define GPIO_IRQ_9 GPIO_0 /* not configured */
|
||||
#define GPIO_IRQ_10 GPIO_6
|
||||
#define GPIO_IRQ_8 GPIO_1
|
||||
#define GPIO_IRQ_9 GPIO_4
|
||||
#define GPIO_IRQ_11 GPIO_7
|
||||
#define GPIO_IRQ_12 GPIO_4
|
||||
#define GPIO_IRQ_12 GPIO_2
|
||||
#define GPIO_IRQ_13 GPIO_9
|
||||
#define GPIO_IRQ_14 GPIO_10
|
||||
#define GPIO_IRQ_15 GPIO_11
|
||||
|
||||
/* GPIO channel 0 config */
|
||||
#define GPIO_0_PORT GPIOA /* Used for user button 1 */
|
||||
#define GPIO_0_PIN 3
|
||||
#define GPIO_0_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_0_EXTI_CFG() (AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI3_PA)
|
||||
#define GPIO_0_EXTI_LINE 4
|
||||
#define GPIO_0_IRQ EXTI4_IRQn
|
||||
#define GPIO_0_IRQ EXTI3_IRQn
|
||||
/* GPIO channel 1 config */
|
||||
#define GPIO_1_PORT GPIOA
|
||||
#define GPIO_1_PIN 8
|
||||
#define GPIO_1_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_1_EXTI_CFG() (AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI8_PA)
|
||||
#define GPIO_1_EXTI_LINE 4
|
||||
#define GPIO_1_IRQ EXTI4_IRQn
|
||||
#define GPIO_1_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 2 config */
|
||||
#define GPIO_2_PORT GPIOA
|
||||
#define GPIO_2_PIN 12
|
||||
#define GPIO_2_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_2_EXTI_CFG() (AFIO->EXTICR[3] |= AFIO_EXTICR4_EXTI12_PA)
|
||||
#define GPIO_2_EXTI_LINE 4
|
||||
#define GPIO_2_IRQ EXTI4_IRQn
|
||||
#define GPIO_2_IRQ EXTI15_10_IRQn
|
||||
/* GPIO channel 3 config */
|
||||
#define GPIO_3_PORT GPIOB
|
||||
#define GPIO_3_PIN 8
|
||||
#define GPIO_3_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPBEN)
|
||||
#define GPIO_3_EXTI_CFG() (AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI8_PB)
|
||||
#define GPIO_3_EXTI_LINE 4
|
||||
#define GPIO_3_IRQ EXTI4_IRQn
|
||||
#define GPIO_3_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 4 config */
|
||||
#define GPIO_4_PORT GPIOB
|
||||
#define GPIO_4_PIN 9
|
||||
#define GPIO_4_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPBEN)
|
||||
#define GPIO_4_EXTI_CFG() (AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI9_PB)
|
||||
#define GPIO_4_EXTI_LINE 4
|
||||
#define GPIO_4_IRQ EXTI4_IRQn
|
||||
#define GPIO_4_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 5 config */
|
||||
#define GPIO_5_PORT GPIOC
|
||||
#define GPIO_5_PIN 7
|
||||
#define GPIO_5_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_5_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI7_PC)
|
||||
#define GPIO_5_EXTI_LINE 4
|
||||
#define GPIO_5_IRQ EXTI4_IRQn
|
||||
#define GPIO_5_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 6 config */
|
||||
#define GPIO_6_PORT GPIOC
|
||||
#define GPIO_6_PIN 8
|
||||
#define GPIO_6_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_6_EXTI_CFG() (AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI8_PC)
|
||||
#define GPIO_6_EXTI_LINE 4
|
||||
#define GPIO_6_IRQ EXTI3_IRQn
|
||||
#define GPIO_6_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 7 config */
|
||||
#define GPIO_7_PORT GPIOC
|
||||
#define GPIO_7_PIN 11
|
||||
#define GPIO_7_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_7_EXTI_CFG() (AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI11_PC)
|
||||
#define GPIO_7_EXTI_LINE 4
|
||||
#define GPIO_7_IRQ EXTI3_IRQn
|
||||
#define GPIO_7_IRQ EXTI15_10_IRQn
|
||||
/* GPIO channel 8 config */
|
||||
#define GPIO_8_PORT GPIOA
|
||||
#define GPIO_8_PIN 5
|
||||
#define GPIO_8_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_8_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI5_PA)
|
||||
#define GPIO_8_EXTI_LINE 4
|
||||
#define GPIO_8_IRQ EXTI4_IRQn
|
||||
#define GPIO_8_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 9 config */
|
||||
#define GPIO_9_PORT GPIOA
|
||||
#define GPIO_9_PIN 6
|
||||
#define GPIO_9_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_9_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI6_PA)
|
||||
#define GPIO_9_EXTI_LINE 4
|
||||
#define GPIO_9_IRQ EXTI4_IRQn
|
||||
#define GPIO_9_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 10 config */
|
||||
#define GPIO_10_PORT GPIOA
|
||||
#define GPIO_10_PIN 7
|
||||
#define GPIO_10_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_10_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI7_PA)
|
||||
#define GPIO_10_EXTI_LINE 4
|
||||
#define GPIO_10_IRQ EXTI4_IRQn
|
||||
#define GPIO_10_IRQ EXTI9_5_IRQn
|
||||
/* GPIO channel 11 config */
|
||||
#define GPIO_11_PORT GPIOA
|
||||
#define GPIO_11_PIN 4
|
||||
#define GPIO_11_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_11_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI4_PA)
|
||||
#define GPIO_11_EXTI_LINE 4
|
||||
#define GPIO_11_IRQ EXTI4_IRQn
|
||||
/* GPIO channel 12 config */
|
||||
#define GPIO_12_PORT GPIOC
|
||||
#define GPIO_12_PIN 4
|
||||
#define GPIO_12_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_12_EXTI_CFG() (AFIO->EXTICR[1] |= AFIO_EXTICR2_EXTI4_PC)
|
||||
#define GPIO_12_EXTI_LINE 4
|
||||
#define GPIO_12_IRQ EXTI4_IRQn
|
||||
/* GPIO channel 13 config */
|
||||
#define GPIO_13_PORT GPIOC
|
||||
#define GPIO_13_PIN 1
|
||||
#define GPIO_13_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_13_EXTI_CFG() (AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI1_PC)
|
||||
#define GPIO_13_EXTI_LINE 4
|
||||
#define GPIO_13_IRQ EXTI4_IRQn
|
||||
#define GPIO_13_IRQ EXTI1_IRQn
|
||||
/* GPIO channel 14 config */
|
||||
#define GPIO_14_PORT GPIOA
|
||||
#define GPIO_14_PIN 2
|
||||
#define GPIO_14_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPAEN)
|
||||
#define GPIO_14_EXTI_CFG() (AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI2_PA)
|
||||
#define GPIO_14_EXTI_LINE 4
|
||||
#define GPIO_14_IRQ EXTI4_IRQn
|
||||
/* GPIO channel 15 config */
|
||||
#define GPIO_15_PORT GPIOC
|
||||
#define GPIO_15_PIN 15
|
||||
#define GPIO_15_CLKEN() (RCC->APB2ENR |= RCC_APB2ENR_IOPCEN)
|
||||
#define GPIO_15_EXTI_CFG() (AFIO->EXTICR[3] |= AFIO_EXTICR4_EXTI15_PC)
|
||||
#define GPIO_15_EXTI_LINE 4
|
||||
#define GPIO_15_IRQ EXTI4_IRQn
|
||||
#define GPIO_14_IRQ EXTI2_IRQn
|
||||
|
||||
/**
|
||||
* @brief SPI configuration
|
||||
|
@ -335,8 +335,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
switch (dev) {
|
||||
#if GPIO_0_EN
|
||||
case GPIO_0:
|
||||
exti_line = GPIO_0_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_0;
|
||||
exti_line = GPIO_0_PIN;
|
||||
gpio_irq = GPIO_0;
|
||||
GPIO_0_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_0_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_0_IRQ);
|
||||
@ -344,8 +344,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_1_EN
|
||||
case GPIO_1:
|
||||
exti_line = GPIO_1_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_1;
|
||||
exti_line = GPIO_1_PIN;
|
||||
gpio_irq = GPIO_1;
|
||||
GPIO_1_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_1_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_1_IRQ);
|
||||
@ -353,8 +353,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_2_EN
|
||||
case GPIO_2:
|
||||
exti_line = GPIO_2_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_2;
|
||||
exti_line = GPIO_2_PIN;
|
||||
gpio_irq = GPIO_2;
|
||||
GPIO_2_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_2_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_2_IRQ);
|
||||
@ -362,8 +362,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_3_EN
|
||||
case GPIO_3:
|
||||
exti_line = GPIO_3_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_3;
|
||||
exti_line = GPIO_3_PIN;
|
||||
gpio_irq = GPIO_3;
|
||||
GPIO_3_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_3_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_3_IRQ);
|
||||
@ -371,8 +371,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_4_EN
|
||||
case GPIO_4:
|
||||
exti_line = GPIO_4_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_4;
|
||||
exti_line = GPIO_4_PIN;
|
||||
gpio_irq = GPIO_4;
|
||||
GPIO_4_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_4_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_4_IRQ);
|
||||
@ -380,8 +380,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_5_EN
|
||||
case GPIO_5:
|
||||
exti_line = GPIO_5_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_5;
|
||||
exti_line = GPIO_5_PIN;
|
||||
gpio_irq = GPIO_5;
|
||||
GPIO_5_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_5_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_5_IRQ);
|
||||
@ -389,8 +389,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_6_EN
|
||||
case GPIO_6:
|
||||
exti_line = GPIO_6_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_6;
|
||||
exti_line = GPIO_6_PIN;
|
||||
gpio_irq = GPIO_6;
|
||||
GPIO_6_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_6_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_6_IRQ);
|
||||
@ -398,8 +398,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_7_EN
|
||||
case GPIO_7:
|
||||
exti_line = GPIO_7_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_7;
|
||||
exti_line = GPIO_7_PIN;
|
||||
gpio_irq = GPIO_7;
|
||||
GPIO_7_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_7_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_7_IRQ);
|
||||
@ -407,8 +407,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_8_EN
|
||||
case GPIO_8:
|
||||
exti_line = GPIO_8_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_8;
|
||||
exti_line = GPIO_8_PIN;
|
||||
gpio_irq = GPIO_8;
|
||||
GPIO_8_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_8_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_8_IRQ);
|
||||
@ -416,8 +416,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_9_EN
|
||||
case GPIO_9:
|
||||
exti_line = GPIO_9_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_9;
|
||||
exti_line = GPIO_9_PIN;
|
||||
gpio_irq = GPIO_9;
|
||||
GPIO_9_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_9_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_9_IRQ);
|
||||
@ -425,8 +425,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_10_EN
|
||||
case GPIO_10:
|
||||
exti_line = GPIO_10_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_10;
|
||||
exti_line = GPIO_10_PIN;
|
||||
gpio_irq = GPIO_10;
|
||||
GPIO_10_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_10_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_10_IRQ);
|
||||
@ -434,8 +434,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_11_EN
|
||||
case GPIO_11:
|
||||
exti_line = GPIO_11_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_11;
|
||||
exti_line = GPIO_11_PIN;
|
||||
gpio_irq = GPIO_11;
|
||||
GPIO_11_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_11_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_11_IRQ);
|
||||
@ -443,8 +443,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
exti_line = GPIO_12_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_12;
|
||||
exti_line = GPIO_12_PIN;
|
||||
gpio_irq = GPIO_12;
|
||||
GPIO_12_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_12_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_12_IRQ);
|
||||
@ -452,8 +452,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
exti_line = GPIO_13_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_13;
|
||||
exti_line = GPIO_13_PIN;
|
||||
gpio_irq = GPIO_13;
|
||||
GPIO_13_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_13_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_13_IRQ);
|
||||
@ -461,8 +461,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
exti_line = GPIO_14_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_14;
|
||||
exti_line = GPIO_14_PIN;
|
||||
gpio_irq = GPIO_14;
|
||||
GPIO_14_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_14_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_14_IRQ);
|
||||
@ -470,8 +470,8 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
exti_line = GPIO_15_EXTI_LINE;
|
||||
gpio_irq = GPIO_IRQ_15;
|
||||
exti_line = GPIO_15_PIN;
|
||||
gpio_irq = GPIO_15;
|
||||
GPIO_15_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_15_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_15_IRQ);
|
||||
@ -515,89 +515,87 @@ void gpio_irq_enable(gpio_t dev)
|
||||
switch(dev) {
|
||||
#if GPIO_0_EN
|
||||
case GPIO_0:
|
||||
exti_line = GPIO_0_EXTI_LINE;
|
||||
exti_line = GPIO_0_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_1_EN
|
||||
case GPIO_1:
|
||||
exti_line = GPIO_1_EXTI_LINE;
|
||||
exti_line = GPIO_1_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_2_EN
|
||||
case GPIO_2:
|
||||
exti_line = GPIO_2_EXTI_LINE;
|
||||
exti_line = GPIO_2_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_3_EN
|
||||
case GPIO_3:
|
||||
exti_line = GPIO_3_EXTI_LINE;
|
||||
exti_line = GPIO_3_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_4_EN
|
||||
case GPIO_4:
|
||||
exti_line = GPIO_4_EXTI_LINE;
|
||||
exti_line = GPIO_4_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_5_EN
|
||||
case GPIO_5:
|
||||
exti_line = GPIO_5_EXTI_LINE;
|
||||
exti_line = GPIO_5_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_6_EN
|
||||
case GPIO_6:
|
||||
exti_line = GPIO_6_EXTI_LINE;
|
||||
exti_line = GPIO_6_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_7_EN
|
||||
case GPIO_7:
|
||||
exti_line = GPIO_7_EXTI_LINE;
|
||||
exti_line = GPIO_7_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_8_EN
|
||||
case GPIO_8:
|
||||
exti_line = GPIO_8_EXTI_LINE;
|
||||
exti_line = GPIO_8_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_9_EN
|
||||
case GPIO_9:
|
||||
exti_line = GPIO_9_EXTI_LINE;
|
||||
exti_line = GPIO_9_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_10_EN
|
||||
case GPIO_10:
|
||||
exti_line = GPIO_10_EXTI_LINE;
|
||||
exti_line = GPIO_10_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_11_EN
|
||||
case GPIO_11:
|
||||
exti_line = GPIO_11_EXTI_LINE;
|
||||
exti_line = GPIO_11_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
exti_line = GPIO_12_EXTI_LINE;
|
||||
exti_line = GPIO_12_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
exti_line = GPIO_13_EXTI_LINE;
|
||||
exti_line = GPIO_13_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
exti_line = GPIO_14_EXTI_LINE;
|
||||
exti_line = GPIO_14_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
exti_line = GPIO_15_EXTI_LINE;
|
||||
exti_line = GPIO_15_PIN;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return;
|
||||
}
|
||||
/* save state */
|
||||
// int state = (EXTI->IMR & (1 << exti_line) >> exti_line);
|
||||
|
||||
/* unmask the pins interrupt channel */
|
||||
EXTI->IMR |= (1 << exti_line);
|
||||
@ -612,89 +610,87 @@ void gpio_irq_disable(gpio_t dev)
|
||||
switch(dev) {
|
||||
#if GPIO_0_EN
|
||||
case GPIO_0:
|
||||
exti_line = GPIO_0_EXTI_LINE;
|
||||
exti_line = GPIO_0_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_1_EN
|
||||
case GPIO_1:
|
||||
exti_line = GPIO_1_EXTI_LINE;
|
||||
exti_line = GPIO_1_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_2_EN
|
||||
case GPIO_2:
|
||||
exti_line = GPIO_2_EXTI_LINE;
|
||||
exti_line = GPIO_2_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_3_EN
|
||||
case GPIO_3:
|
||||
exti_line = GPIO_3_EXTI_LINE;
|
||||
exti_line = GPIO_3_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_4_EN
|
||||
case GPIO_4:
|
||||
exti_line = GPIO_4_EXTI_LINE;
|
||||
exti_line = GPIO_4_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_5_EN
|
||||
case GPIO_5:
|
||||
exti_line = GPIO_5_EXTI_LINE;
|
||||
exti_line = GPIO_5_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_6_EN
|
||||
case GPIO_6:
|
||||
exti_line = GPIO_6_EXTI_LINE;
|
||||
exti_line = GPIO_6_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_7_EN
|
||||
case GPIO_7:
|
||||
exti_line = GPIO_7_EXTI_LINE;
|
||||
exti_line = GPIO_7_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_8_EN
|
||||
case GPIO_8:
|
||||
exti_line = GPIO_8_EXTI_LINE;
|
||||
exti_line = GPIO_8_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_9_EN
|
||||
case GPIO_9:
|
||||
exti_line = GPIO_9_EXTI_LINE;
|
||||
exti_line = GPIO_9_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_10_EN
|
||||
case GPIO_10:
|
||||
exti_line = GPIO_10_EXTI_LINE;
|
||||
exti_line = GPIO_10_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_11_EN
|
||||
case GPIO_11:
|
||||
exti_line = GPIO_11_EXTI_LINE;
|
||||
exti_line = GPIO_11_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
exti_line = GPIO_12_EXTI_LINE;
|
||||
exti_line = GPIO_12_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
exti_line = GPIO_13_EXTI_LINE;
|
||||
exti_line = GPIO_13_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
exti_line = GPIO_14_EXTI_LINE;
|
||||
exti_line = GPIO_14_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
exti_line = GPIO_15_EXTI_LINE;
|
||||
exti_line = GPIO_15_PIN;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return;
|
||||
}
|
||||
// /* save state */
|
||||
// int state = ((EXTI->IMR & (1 << exti_line)) >> exti_line);
|
||||
|
||||
/* unmask the pins interrupt channel */
|
||||
EXTI->IMR &= ~(1 << exti_line);
|
||||
@ -1017,13 +1013,13 @@ void gpio_write(gpio_t dev, int value)
|
||||
}
|
||||
}
|
||||
|
||||
#if GPIO_IRQ_0
|
||||
#ifdef GPIO_IRQ_0
|
||||
__attribute__((naked)) void isr_exti0(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
if (EXTI->PR & EXTI_PR_PR0) {
|
||||
EXTI->PR |= EXTI_PR_PR0; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_0].cb(config[GPIO_0].arg);
|
||||
config[GPIO_IRQ_0].cb(config[GPIO_IRQ_0].arg);
|
||||
}
|
||||
|
||||
if (sched_context_switch_request) {
|
||||
@ -1033,13 +1029,13 @@ __attribute__((naked)) void isr_exti0(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if GPIO_IRQ_1
|
||||
#ifdef GPIO_IRQ_1
|
||||
__attribute__((naked)) void isr_exti1(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
if (EXTI->PR & EXTI_PR_PR1) {
|
||||
EXTI->PR |= EXTI_PR_PR1; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_1].cb(config[GPIO_1].arg);
|
||||
config[GPIO_IRQ_1].cb(config[GPIO_IRQ_1].arg);
|
||||
}
|
||||
|
||||
if (sched_context_switch_request) {
|
||||
@ -1049,13 +1045,13 @@ __attribute__((naked)) void isr_exti1(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if GPIO_IRQ_2
|
||||
#ifdef GPIO_IRQ_2
|
||||
__attribute__((naked)) void isr_exti2(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
if (EXTI->PR & EXTI_PR_PR2) {
|
||||
EXTI->PR |= EXTI_PR_PR2; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_2].cb(config[GPIO_2].arg);
|
||||
config[GPIO_IRQ_2].cb(config[GPIO_IRQ_2].arg);
|
||||
}
|
||||
|
||||
if (sched_context_switch_request) {
|
||||
@ -1065,13 +1061,13 @@ __attribute__((naked)) void isr_exti2(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if GPIO_IRQ_3
|
||||
#ifdef GPIO_IRQ_3
|
||||
__attribute__((naked)) void isr_exti3(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
if (EXTI->PR & EXTI_PR_PR3) {
|
||||
EXTI->PR |= EXTI_PR_PR3; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_3].cb(config[GPIO_3].arg);
|
||||
config[GPIO_IRQ_3].cb(config[GPIO_IRQ_3].arg);
|
||||
}
|
||||
|
||||
if (sched_context_switch_request) {
|
||||
@ -1081,13 +1077,13 @@ __attribute__((naked)) void isr_exti3(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if GPIO_IRQ_4
|
||||
#ifdef GPIO_IRQ_4
|
||||
__attribute__((naked)) void isr_exti4(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
if (EXTI->PR & EXTI_PR_PR4) {
|
||||
EXTI->PR |= EXTI_PR_PR4; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_4].cb(config[GPIO_4].arg);
|
||||
config[GPIO_IRQ_4].cb(config[GPIO_IRQ_4].arg);
|
||||
}
|
||||
|
||||
if (sched_context_switch_request) {
|
||||
@ -1097,37 +1093,38 @@ __attribute__((naked)) void isr_exti4(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(GPIO_IRQ_5) || defined(GPIO_IRQ_6) || defined(GPIO_IRQ_7) || defined(GPIO_IRQ_8) || defined(GPIO_IRQ_9)
|
||||
__attribute__((naked)) void isr_exti9_5(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
#if GPIO_IRQ_5
|
||||
#ifdef GPIO_IRQ_5
|
||||
if (EXTI->PR & EXTI_PR_PR5) {
|
||||
EXTI->PR |= EXTI_PR_PR5; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_5].cb(config[GPIO_5].arg);
|
||||
config[GPIO_IRQ_5].cb(config[GPIO_IRQ_5].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_6
|
||||
else if (EXTI->PR & EXTI_PR_PR6) {
|
||||
#ifdef GPIO_IRQ_6
|
||||
if (EXTI->PR & EXTI_PR_PR6) {
|
||||
EXTI->PR |= EXTI_PR_PR6; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_6].cb(config[GPIO_6].arg);
|
||||
config[GPIO_IRQ_6].cb(config[GPIO_IRQ_6].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_7
|
||||
else if (EXTI->PR & EXTI_PR_PR7) {
|
||||
#ifdef GPIO_IRQ_7
|
||||
if (EXTI->PR & EXTI_PR_PR7) {
|
||||
EXTI->PR |= EXTI_PR_PR7; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_7].cb(config[GPIO_7].arg);
|
||||
config[GPIO_IRQ_7].cb(config[GPIO_IRQ_7].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_8
|
||||
else if (EXTI->PR & EXTI_PR_PR8) {
|
||||
#ifdef GPIO_IRQ_8
|
||||
if (EXTI->PR & EXTI_PR_PR8) {
|
||||
EXTI->PR |= EXTI_PR_PR8; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_8].cb(config[GPIO_8].arg);
|
||||
config[GPIO_IRQ_8].cb(config[GPIO_IRQ_8].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_9
|
||||
else if (EXTI->PR & EXTI_PR_PR9) {
|
||||
#ifdef GPIO_IRQ_9
|
||||
if (EXTI->PR & EXTI_PR_PR9) {
|
||||
EXTI->PR |= EXTI_PR_PR9; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_9].cb(config[GPIO_9].arg);
|
||||
config[GPIO_IRQ_9].cb(config[GPIO_IRQ_9].arg);
|
||||
}
|
||||
#endif
|
||||
if (sched_context_switch_request) {
|
||||
@ -1135,44 +1132,46 @@ __attribute__((naked)) void isr_exti9_5(void)
|
||||
}
|
||||
ISR_EXIT();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(GPIO_IRQ_10) || defined(GPIO_IRQ_11) || defined(GPIO_IRQ_12) || defined(GPIO_IRQ_13) || defined(GPIO_IRQ_14) || defined(GPIO_IRQ_15)
|
||||
__attribute__((naked)) void isr_exti15_10(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
#if GPIO_IRQ_10
|
||||
#ifdef GPIO_IRQ_10
|
||||
if (EXTI->PR & EXTI_PR_PR10) {
|
||||
EXTI->PR |= EXTI_PR_PR10; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_10].cb(config[GPIO_10].arg);
|
||||
config[GPIO_IRQ_10].cb(config[GPIO_IRQ_10].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_11
|
||||
else if (EXTI->PR & EXTI_PR_PR11) {
|
||||
#ifdef GPIO_IRQ_11
|
||||
if (EXTI->PR & EXTI_PR_PR11) {
|
||||
EXTI->PR |= EXTI_PR_PR11; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_11].cb(config[GPIO_11].arg);
|
||||
config[GPIO_IRQ_11].cb(config[GPIO_IRQ_11].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_12
|
||||
else if (EXTI->PR & EXTI_PR_PR12) {
|
||||
#ifdef GPIO_IRQ_12
|
||||
if (EXTI->PR & EXTI_PR_PR12) {
|
||||
EXTI->PR |= EXTI_PR_PR12; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_12].cb(config[GPIO_12].arg);
|
||||
config[GPIO_IRQ_12].cb(config[GPIO_IRQ_12].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_13
|
||||
else if (EXTI->PR & EXTI_PR_PR13) {
|
||||
#ifdef GPIO_IRQ_13
|
||||
if (EXTI->PR & EXTI_PR_PR13) {
|
||||
EXTI->PR |= EXTI_PR_PR13; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_13].cb(config[GPIO_13].arg);
|
||||
config[GPIO_IRQ_13].cb(config[GPIO_IRQ_13].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_14
|
||||
else if (EXTI->PR & EXTI_PR_PR14) {
|
||||
#ifdef GPIO_IRQ_14
|
||||
if (EXTI->PR & EXTI_PR_PR14) {
|
||||
EXTI->PR |= EXTI_PR_PR14; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_14].cb(config[GPIO_14].arg);
|
||||
config[GPIO_IRQ_14].cb(config[GPIO_IRQ_14].arg);
|
||||
}
|
||||
#endif
|
||||
#if GPIO_IRQ_15
|
||||
else if (EXTI->PR & EXTI_PR_PR15) {
|
||||
#ifdef GPIO_IRQ_15
|
||||
if (EXTI->PR & EXTI_PR_PR15) {
|
||||
EXTI->PR |= EXTI_PR_PR15; /* clear status bit by writing a 1 to it */
|
||||
config[GPIO_15].cb(config[GPIO_15].arg);
|
||||
config[GPIO_IRQ_15].cb(config[GPIO_IRQ_15].arg);
|
||||
}
|
||||
#endif
|
||||
if (sched_context_switch_request) {
|
||||
@ -1180,5 +1179,6 @@ __attribute__((naked)) void isr_exti15_10(void)
|
||||
}
|
||||
ISR_EXIT();
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user