This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.

Dependencies:   RemoteIR

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