BlinkButton2Sec done

Committer:
redona
Date:
Fri Nov 30 10:56:33 2018 +0000
Revision:
0:bc51741ad0f9
completed BlinkButton2Sec

Who changed what in which revision?

UserRevisionLine numberNew contents of line
redona 0:bc51741ad0f9 1 #include "mbed.h"
redona 0:bc51741ad0f9 2
redona 0:bc51741ad0f9 3 DigitalOut led1(LED1);
redona 0:bc51741ad0f9 4 InterruptIn button(USER_BUTTON);
redona 0:bc51741ad0f9 5 EventQueue queue(32 * EVENTS_EVENT_SIZE);
redona 0:bc51741ad0f9 6 Thread t;
redona 0:bc51741ad0f9 7 time_t seconds = time(NULL);
redona 0:bc51741ad0f9 8
redona 0:bc51741ad0f9 9 void rise_handler_thread_context(void) {
redona 0:bc51741ad0f9 10 if(seconds - time(NULL) > 2){
redona 0:bc51741ad0f9 11 seconds = time(NULL);
redona 0:bc51741ad0f9 12 }
redona 0:bc51741ad0f9 13 else {
redona 0:bc51741ad0f9 14 led1 = !led1;
redona 0:bc51741ad0f9 15 wait(1);
redona 0:bc51741ad0f9 16 led1 = !led1;
redona 0:bc51741ad0f9 17 wait(1);
redona 0:bc51741ad0f9 18 led1 = !led1;
redona 0:bc51741ad0f9 19 wait(1);
redona 0:bc51741ad0f9 20 led1 = !led1;
redona 0:bc51741ad0f9 21 seconds = time(NULL);
redona 0:bc51741ad0f9 22 }
redona 0:bc51741ad0f9 23 }
redona 0:bc51741ad0f9 24
redona 0:bc51741ad0f9 25 void rise_handler_iterrupt_context(void) {
redona 0:bc51741ad0f9 26 queue.call(rise_handler_thread_context);
redona 0:bc51741ad0f9 27 }
redona 0:bc51741ad0f9 28
redona 0:bc51741ad0f9 29 void fall_handler(void) {
redona 0:bc51741ad0f9 30 printf("hello\n");
redona 0:bc51741ad0f9 31 }
redona 0:bc51741ad0f9 32
redona 0:bc51741ad0f9 33 int main() {
redona 0:bc51741ad0f9 34 // Start the event queue
redona 0:bc51741ad0f9 35 t.start(callback(&queue, &EventQueue::dispatch_forever));
redona 0:bc51741ad0f9 36 // The 'rise' handler will execute in IRQ context
redona 0:bc51741ad0f9 37 button.rise(rise_handler_iterrupt_context);
redona 0:bc51741ad0f9 38 // The 'fall' handler will execute in the context of thread 't'
redona 0:bc51741ad0f9 39 button.fall(queue.event(fall_handler));
redona 0:bc51741ad0f9 40 }