From 6b0b4a0cad348813f54d1395cee5fe77ea38dad0 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 5 Jan 2014 23:49:34 +0000 Subject: [PATCH] stm: pull-up usr switch on pyboard (fixes regression). --- stm/led.c | 46 +++++++++++++++++++++++----------------------- stm/usrsw.c | 7 +++++-- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/stm/led.c b/stm/led.c index 044a91f0c1..1692eaea74 100644 --- a/stm/led.c +++ b/stm/led.c @@ -8,10 +8,10 @@ #include "led.h" /* LED numbers, used internally */ -#define PYB_LED_1 (1) -#define PYB_LED_2 (2) -#define PYB_LED_3 (3) -#define PYB_LED_4 (4) +#define PYB_LED_1 (0) +#define PYB_LED_2 (1) +#define PYB_LED_3 (2) +#define PYB_LED_4 (3) #if defined(PYBOARD) #define PYB_LED1_PORT (GPIOA) @@ -86,22 +86,22 @@ void led_state(pyb_led_t led, int state) { switch (led) { case PYB_LED_1: - pin = PYB_LED1_PIN; - port = PYB_LED1_PORT; + pin = PYB_LED1_PIN; + port = PYB_LED1_PORT; break; case PYB_LED_2: - pin = PYB_LED2_PIN; - port = PYB_LED2_PORT; + pin = PYB_LED2_PIN; + port = PYB_LED2_PORT; break; case PYB_LED_3: - pin = PYB_LED3_PIN; - port = PYB_LED3_PORT; + pin = PYB_LED3_PIN; + port = PYB_LED3_PORT; break; case PYB_LED_4: - pin = PYB_LED4_PIN; - port = PYB_LED4_PORT; + pin = PYB_LED4_PIN; + port = PYB_LED4_PORT; break; - default: + default: return; } @@ -120,27 +120,27 @@ void led_toggle(pyb_led_t led) { switch (led) { case PYB_LED_1: - pin = PYB_LED1_PIN; - port = PYB_LED1_PORT; + pin = PYB_LED1_PIN; + port = PYB_LED1_PORT; break; case PYB_LED_2: - pin = PYB_LED2_PIN; - port = PYB_LED2_PORT; + pin = PYB_LED2_PIN; + port = PYB_LED2_PORT; break; case PYB_LED_3: - pin = PYB_LED3_PIN; - port = PYB_LED3_PORT; + pin = PYB_LED3_PIN; + port = PYB_LED3_PORT; break; case PYB_LED_4: - pin = PYB_LED4_PIN; - port = PYB_LED4_PORT; + pin = PYB_LED4_PIN; + port = PYB_LED4_PORT; break; - default: + default: return; } if (!(port->ODR & pin)) { - // turn LED off + // turn LED off PYB_LED_OFF(port, pin); } else { // turn LED on (output low) diff --git a/stm/usrsw.c b/stm/usrsw.c index 1feb271733..9d1ee50ffb 100644 --- a/stm/usrsw.c +++ b/stm/usrsw.c @@ -12,6 +12,7 @@ #if defined (PYBOARD) #define USRSW_PORT (GPIOA) #define USRSW_PIN (GPIO_Pin_13) + #define USRSW_PUPD (GPIO_PuPd_UP) #define USRSW_EXTI_PIN (EXTI_PinSource13) #define USRSW_EXTI_PORT (EXTI_PortSourceGPIOA) #define USRSW_EXTI_LINE (EXTI_Line13) @@ -20,18 +21,20 @@ #elif defined (STM32F4DISC) #define USRSW_PORT (GPIOA) #define USRSW_PIN (GPIO_Pin_0) + #define USRSW_PUPD (GPIO_PuPd_NOPULL) #define USRSW_EXTI_PIN (EXTI_PinSource0) #define USRSW_EXTI_PORT (EXTI_PortSourceGPIOA) #define USRSW_EXTI_LINE (EXTI_Line0) #define USRSW_EXTI_IRQN (EXTI0_IRQn) #define USRSW_EXTI_EDGE (EXTI_Trigger_Falling) -#endif +#endif + void switch_init(void) { // make it an input with pull-up GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = USRSW_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; /* allow external pull up/down */ + GPIO_InitStructure.GPIO_PuPd = USRSW_PUPD; GPIO_Init(USRSW_PORT, &GPIO_InitStructure); // the rest does the EXTI interrupt