Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
Diff: main.cpp
- Revision:
- 111:15fa6baff793
- Parent:
- 110:6a67af628913
- Child:
- 112:5a7629ace1c4
--- a/main.cpp Tue Apr 07 09:33:40 2020 +0000 +++ b/main.cpp Thu Apr 09 09:25:27 2020 +0000 @@ -1,27 +1,28 @@ #include "mbed.h" + +int interval; + void led2_init(void); void button_init(void); -uint32_t button_input(void); void led2_toggle(void); +void button_Handler(void); + + int main() { - int interval = 500; - uint32_t val; led2_init(); button_init(); + NVIC_SetVector(EXTI15_10_IRQn,(uint32_t)button_Handler); + + interval = 500; + while(true) { - val = button_input(); + led2_toggle(); - if(val == 0) { - interval = interval <<1; - if(interval > 2000) - interval = 500; - } - led2_toggle(); ThisThread::sleep_for(interval); } } @@ -52,13 +53,26 @@ void button_init(void) { + __HAL_RCC_GPIOC_CLK_ENABLE(); - GPIOC->MODER &= ~(0b11<< (13 * 2)); // reset PC13 mode - GPIOC->MODER |= 0b00<< (13 * 2); // 01 - read mode + GPIOC->MODER &= ~(0b11<< (5 * 2)); // reset PA5 mode + GPIOC->MODER |= 0b00<< (5 * 2); // 00 - read mode + + SYSCFG->EXTICR[3] &= ~(0b1111 << 4); + SYSCFG->EXTICR[3] |= (0b0010 << 4); + + EXTI->IMR |= (0b1 << 13); + EXTI->FTSR |= (0b1 << 13); + } -uint32_t button_input(void) { + +void button_Handler(void){ - uint32_t val = GPIOC->IDR & (0b1<<13); + if(interval < 2000) { + interval *= 2; + } else { + interval = 500; + } - return val; + EXTI->PR |= (0b1 << 13); } \ No newline at end of file