add button to increment second
This commit is contained in:
parent
6b34d98394
commit
8e1678301c
16
global.h
16
global.h
|
@ -49,15 +49,15 @@
|
||||||
/** @defgroup board_button board user button GPIO
|
/** @defgroup board_button board user button GPIO
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined(MAPLE_MINI)
|
//#if defined(MAPLE_MINI)
|
||||||
/* on maple mini user button is on 32/PB8 */
|
/* on maple mini user button is on 32/PB8 */
|
||||||
#define BUTTON_RCC RCC_GPIOB /**< GPIO peripheral clock (port B on maple mini) */
|
#define BUTTON_RCC RCC_GPIOB /**< GPIO peripheral clock */
|
||||||
#define BUTTON_PORT GPIOB /**< GPIO port (port B on maple mini) */
|
#define BUTTON_PORT GPIOB /**< GPIO port */
|
||||||
#define BUTTON_PIN GPIO8 /**< GPIO pin (pin PB8 on maple mini) */
|
#define BUTTON_PIN GPIO8 /**< GPIO pin */
|
||||||
#define BUTTON_EXTI EXTI8 /**< GPIO external interrupt (exti 8 for pin 8 on maple mini) */
|
#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 8 on maple mini) */
|
#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 on maple mini) */
|
#define BUTTON_ISR exti9_5_isr /**< GPIO line interrupt service routine (isr for line 9 to 5 for pin 8) */
|
||||||
#endif
|
//#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/** @brief switch on board LED */
|
/** @brief switch on board LED */
|
||||||
|
|
14
main.c
14
main.c
|
@ -360,10 +360,11 @@ int main(void)
|
||||||
// setup button
|
// setup button
|
||||||
#if defined(BUTTON_RCC) && defined(BUTTON_PORT) && defined(BUTTON_PIN) && defined(BUTTON_EXTI) && defined(BUTTON_IRQ)
|
#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
|
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
|
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_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
|
exti_enable_request(BUTTON_EXTI); // enable external interrupt
|
||||||
nvic_enable_irq(BUTTON_IRQ); // enable interrupt
|
nvic_enable_irq(BUTTON_IRQ); // enable interrupt
|
||||||
#endif
|
#endif
|
||||||
|
@ -488,9 +489,14 @@ int main(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (button_flag) { // user pressed button
|
while (button_flag) { // user pressed button
|
||||||
button_flag = false; // reset flag
|
|
||||||
action = true; // action has been performed
|
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
|
while (time_flag) { // time passed
|
||||||
time_flag = false; // reset flag
|
time_flag = false; // reset flag
|
||||||
|
|
Loading…
Reference in New Issue