Skip to content

Commit aa7a68c

Browse files
cpu/stm32f1: fixed wrongly applied GPIO_x<->GPIO_IRQ_y mapping
1 parent f7cd8c3 commit aa7a68c

File tree

2 files changed

+22
-24
lines changed

2 files changed

+22
-24
lines changed

boards/iot-lab_M3/include/periph_conf.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
*
136136
* These defines are used for the backmapping in the matching interrupt
137137
* service routines to call the correct callbacks.
138+
* GPIO_IRQ_x where x matches the value defined by GPIO_y_PIN
138139
*/
139140
#define GPIO_IRQ_1 GPIO_13
140141
#define GPIO_IRQ_2 GPIO_14
@@ -149,9 +150,6 @@
149150
#define GPIO_IRQ_12 GPIO_2
150151
#define GPIO_IRQ_13 GPIO_9
151152
#define GPIO_IRQ_14 GPIO_10
152-
/* not configured */
153-
#define GPIO_IRQ_0 (GPIO_NUMOF-1)
154-
#define GPIO_IRQ_10 (GPIO_NUMOF-1)
155153

156154
/* GPIO channel 0 config */
157155
#define GPIO_0_PORT GPIOA /* Used for user button 1 */

cpu/stm32f1/periph/gpio.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
315315
{
316316
int res;
317317
uint8_t exti_line;
318-
int8_t gpio_irq;
318+
uint8_t gpio_irq;
319319

320320
/* configure pin as input */
321321
res = gpio_init_in(dev, pullup);
@@ -336,7 +336,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
336336
#if GPIO_0_EN
337337
case GPIO_0:
338338
exti_line = GPIO_0_PIN;
339-
gpio_irq = GPIO_IRQ_0;
339+
gpio_irq = GPIO_0;
340340
GPIO_0_EXTI_CFG();
341341
NVIC_SetPriority(GPIO_0_IRQ, GPIO_IRQ_PRIO);
342342
NVIC_EnableIRQ(GPIO_0_IRQ);
@@ -345,7 +345,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
345345
#if GPIO_1_EN
346346
case GPIO_1:
347347
exti_line = GPIO_1_PIN;
348-
gpio_irq = GPIO_IRQ_1;
348+
gpio_irq = GPIO_1;
349349
GPIO_1_EXTI_CFG();
350350
NVIC_SetPriority(GPIO_1_IRQ, GPIO_IRQ_PRIO);
351351
NVIC_EnableIRQ(GPIO_1_IRQ);
@@ -354,7 +354,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
354354
#if GPIO_2_EN
355355
case GPIO_2:
356356
exti_line = GPIO_2_PIN;
357-
gpio_irq = GPIO_IRQ_2;
357+
gpio_irq = GPIO_2;
358358
GPIO_2_EXTI_CFG();
359359
NVIC_SetPriority(GPIO_2_IRQ, GPIO_IRQ_PRIO);
360360
NVIC_EnableIRQ(GPIO_2_IRQ);
@@ -363,7 +363,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
363363
#if GPIO_3_EN
364364
case GPIO_3:
365365
exti_line = GPIO_3_PIN;
366-
gpio_irq = GPIO_IRQ_3;
366+
gpio_irq = GPIO_3;
367367
GPIO_3_EXTI_CFG();
368368
NVIC_SetPriority(GPIO_3_IRQ, GPIO_IRQ_PRIO);
369369
NVIC_EnableIRQ(GPIO_3_IRQ);
@@ -372,7 +372,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
372372
#if GPIO_4_EN
373373
case GPIO_4:
374374
exti_line = GPIO_4_PIN;
375-
gpio_irq = GPIO_IRQ_4;
375+
gpio_irq = GPIO_4;
376376
GPIO_4_EXTI_CFG();
377377
NVIC_SetPriority(GPIO_4_IRQ, GPIO_IRQ_PRIO);
378378
NVIC_EnableIRQ(GPIO_4_IRQ);
@@ -381,7 +381,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
381381
#if GPIO_5_EN
382382
case GPIO_5:
383383
exti_line = GPIO_5_PIN;
384-
gpio_irq = GPIO_IRQ_5;
384+
gpio_irq = GPIO_5;
385385
GPIO_5_EXTI_CFG();
386386
NVIC_SetPriority(GPIO_5_IRQ, GPIO_IRQ_PRIO);
387387
NVIC_EnableIRQ(GPIO_5_IRQ);
@@ -390,7 +390,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
390390
#if GPIO_6_EN
391391
case GPIO_6:
392392
exti_line = GPIO_6_PIN;
393-
gpio_irq = GPIO_IRQ_6;
393+
gpio_irq = GPIO_6;
394394
GPIO_6_EXTI_CFG();
395395
NVIC_SetPriority(GPIO_6_IRQ, GPIO_IRQ_PRIO);
396396
NVIC_EnableIRQ(GPIO_6_IRQ);
@@ -399,7 +399,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
399399
#if GPIO_7_EN
400400
case GPIO_7:
401401
exti_line = GPIO_7_PIN;
402-
gpio_irq = GPIO_IRQ_7;
402+
gpio_irq = GPIO_7;
403403
GPIO_7_EXTI_CFG();
404404
NVIC_SetPriority(GPIO_7_IRQ, GPIO_IRQ_PRIO);
405405
NVIC_EnableIRQ(GPIO_7_IRQ);
@@ -408,7 +408,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
408408
#if GPIO_8_EN
409409
case GPIO_8:
410410
exti_line = GPIO_8_PIN;
411-
gpio_irq = GPIO_IRQ_8;
411+
gpio_irq = GPIO_8;
412412
GPIO_8_EXTI_CFG();
413413
NVIC_SetPriority(GPIO_8_IRQ, GPIO_IRQ_PRIO);
414414
NVIC_EnableIRQ(GPIO_8_IRQ);
@@ -417,7 +417,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
417417
#if GPIO_9_EN
418418
case GPIO_9:
419419
exti_line = GPIO_9_PIN;
420-
gpio_irq = GPIO_IRQ_9;
420+
gpio_irq = GPIO_9;
421421
GPIO_9_EXTI_CFG();
422422
NVIC_SetPriority(GPIO_9_IRQ, GPIO_IRQ_PRIO);
423423
NVIC_EnableIRQ(GPIO_9_IRQ);
@@ -426,7 +426,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
426426
#if GPIO_10_EN
427427
case GPIO_10:
428428
exti_line = GPIO_10_PIN;
429-
gpio_irq = GPIO_IRQ_10;
429+
gpio_irq = GPIO_10;
430430
GPIO_10_EXTI_CFG();
431431
NVIC_SetPriority(GPIO_10_IRQ, GPIO_IRQ_PRIO);
432432
NVIC_EnableIRQ(GPIO_10_IRQ);
@@ -435,7 +435,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
435435
#if GPIO_11_EN
436436
case GPIO_11:
437437
exti_line = GPIO_11_PIN;
438-
gpio_irq = GPIO_IRQ_11;
438+
gpio_irq = GPIO_11;
439439
GPIO_11_EXTI_CFG();
440440
NVIC_SetPriority(GPIO_11_IRQ, GPIO_IRQ_PRIO);
441441
NVIC_EnableIRQ(GPIO_11_IRQ);
@@ -453,7 +453,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
453453
#if GPIO_13_EN
454454
case GPIO_13:
455455
exti_line = GPIO_13_PIN;
456-
gpio_irq = GPIO_IRQ_13;
456+
gpio_irq = GPIO_13;
457457
GPIO_13_EXTI_CFG();
458458
NVIC_SetPriority(GPIO_13_IRQ, GPIO_IRQ_PRIO);
459459
NVIC_EnableIRQ(GPIO_13_IRQ);
@@ -462,7 +462,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
462462
#if GPIO_14_EN
463463
case GPIO_14:
464464
exti_line = GPIO_14_PIN;
465-
gpio_irq = GPIO_IRQ_14;
465+
gpio_irq = GPIO_14;
466466
GPIO_14_EXTI_CFG();
467467
NVIC_SetPriority(GPIO_14_IRQ, GPIO_IRQ_PRIO);
468468
NVIC_EnableIRQ(GPIO_14_IRQ);
@@ -471,7 +471,7 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
471471
#if GPIO_15_EN
472472
case GPIO_15:
473473
exti_line = GPIO_15_PIN;
474-
gpio_irq = GPIO_IRQ_15;
474+
gpio_irq = GPIO_15;
475475
GPIO_15_EXTI_CFG();
476476
NVIC_SetPriority(GPIO_15_IRQ, GPIO_IRQ_PRIO);
477477
NVIC_EnableIRQ(GPIO_15_IRQ);
@@ -1145,31 +1145,31 @@ __attribute__((naked)) void isr_exti15_10(void)
11451145
}
11461146
#endif
11471147
#ifdef GPIO_IRQ_11
1148-
else if (EXTI->PR & EXTI_PR_PR11) {
1148+
if (EXTI->PR & EXTI_PR_PR11) {
11491149
EXTI->PR |= EXTI_PR_PR11; /* clear status bit by writing a 1 to it */
11501150
config[GPIO_IRQ_11].cb(config[GPIO_IRQ_11].arg);
11511151
}
11521152
#endif
11531153
#ifdef GPIO_IRQ_12
1154-
else if (EXTI->PR & EXTI_PR_PR12) {
1154+
if (EXTI->PR & EXTI_PR_PR12) {
11551155
EXTI->PR |= EXTI_PR_PR12; /* clear status bit by writing a 1 to it */
11561156
config[GPIO_IRQ_12].cb(config[GPIO_IRQ_12].arg);
11571157
}
11581158
#endif
11591159
#ifdef GPIO_IRQ_13
1160-
else if (EXTI->PR & EXTI_PR_PR13) {
1160+
if (EXTI->PR & EXTI_PR_PR13) {
11611161
EXTI->PR |= EXTI_PR_PR13; /* clear status bit by writing a 1 to it */
11621162
config[GPIO_IRQ_13].cb(config[GPIO_IRQ_13].arg);
11631163
}
11641164
#endif
11651165
#ifdef GPIO_IRQ_14
1166-
else if (EXTI->PR & EXTI_PR_PR14) {
1166+
if (EXTI->PR & EXTI_PR_PR14) {
11671167
EXTI->PR |= EXTI_PR_PR14; /* clear status bit by writing a 1 to it */
11681168
config[GPIO_IRQ_14].cb(config[GPIO_IRQ_14].arg);
11691169
}
11701170
#endif
11711171
#ifdef GPIO_IRQ_15
1172-
else if (EXTI->PR & EXTI_PR_PR15) {
1172+
if (EXTI->PR & EXTI_PR_PR15) {
11731173
EXTI->PR |= EXTI_PR_PR15; /* clear status bit by writing a 1 to it */
11741174
config[GPIO_IRQ_15].cb(config[GPIO_IRQ_15].arg);
11751175
}

0 commit comments

Comments
 (0)