From 8e1678301c553f23872ad14abf3a6675e34569b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Sun, 17 Apr 2016 12:16:23 +0200 Subject: [PATCH] add button to increment second --- global.h | 16 ++++++++-------- main.c | 14 ++++++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/global.h b/global.h index bc7bce9..1928803 100644 --- a/global.h +++ b/global.h @@ -49,15 +49,15 @@ /** @defgroup board_button board user button GPIO * @{ */ -#if defined(MAPLE_MINI) +//#if defined(MAPLE_MINI) /* on maple mini user button is on 32/PB8 */ -#define BUTTON_RCC RCC_GPIOB /**< GPIO peripheral clock (port B on maple mini) */ -#define BUTTON_PORT GPIOB /**< GPIO port (port B on maple mini) */ -#define BUTTON_PIN GPIO8 /**< GPIO pin (pin PB8 on maple mini) */ -#define BUTTON_EXTI EXTI8 /**< GPIO external interrupt (exti 8 for pin 8 on maple mini) */ -#define BUTTON_IRQ NVIC_EXTI9_5_IRQ /**< GPIO line interrupt (interrupt for line 9 to 5 for pin 8 on maple mini) */ -#define BUTTON_ISR exti9_5_isr /**< GPIO line interrupt service routine (isr for line 9 to 5 for pin 8 on maple mini) */ -#endif +#define BUTTON_RCC RCC_GPIOB /**< GPIO peripheral clock */ +#define BUTTON_PORT GPIOB /**< GPIO port */ +#define BUTTON_PIN GPIO8 /**< GPIO pin */ +#define BUTTON_EXTI EXTI8 /**< GPIO external interrupt */ +#define BUTTON_IRQ NVIC_EXTI9_5_IRQ /**< GPIO line interrupt (interrupt for line 9 to 5 for pin) */ +#define BUTTON_ISR exti9_5_isr /**< GPIO line interrupt service routine (isr for line 9 to 5 for pin 8) */ +//#endif /** @} */ /** @brief switch on board LED */ diff --git a/main.c b/main.c index 89668d1..1e88b8b 100644 --- a/main.c +++ b/main.c @@ -360,10 +360,11 @@ int main(void) // setup button #if defined(BUTTON_RCC) && defined(BUTTON_PORT) && defined(BUTTON_PIN) && defined(BUTTON_EXTI) && defined(BUTTON_IRQ) rcc_periph_clock_enable(BUTTON_RCC); // enable clock for button - gpio_set_mode(BUTTON_PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_FLOAT, BUTTON_PIN); // set button pin to input + gpio_set_mode(BUTTON_PORT, GPIO_MODE_INPUT, GPIO_CNF_INPUT_PULL_UPDOWN, BUTTON_PIN); // set button pin to input + gpio_clear(BUTTON_PORT, BUTTON_PIN); // pull down to be able to detect button push (go high) rcc_periph_clock_enable(RCC_AFIO); // enable alternate function clock for external interrupt exti_select_source(BUTTON_EXTI, BUTTON_PORT); // mask external interrupt of this pin only for this port - exti_set_trigger(BUTTON_EXTI, EXTI_TRIGGER_BOTH); // trigger on both edge + exti_set_trigger(BUTTON_EXTI, EXTI_TRIGGER_RISING); // trigger on both edge exti_enable_request(BUTTON_EXTI); // enable external interrupt nvic_enable_irq(BUTTON_IRQ); // enable interrupt #endif @@ -488,9 +489,14 @@ int main(void) } } while (button_flag) { // user pressed button - button_flag = false; // reset flag action = true; // action has been performed - led_toggle(); // toggle LED + printf("time incremented by 1 second\n"); + rtc_set_counter_val(rtc_get_counter_val()+ticks_second); // increment time + //led_toggle(); // toggle LED + for (uint32_t i=0; i<1000000; i++) { // wait a bit to remove noise and double trigger + __asm__("nop"); + } + button_flag = false; // reset flag } while (time_flag) { // time passed time_flag = false; // reset flag