Redona Kembora
/
BlinkButton2Sec
BlinkButton2Sec done
main.cpp@0:bc51741ad0f9, 2018-11-30 (annotated)
- Committer:
- redona
- Date:
- Fri Nov 30 10:56:33 2018 +0000
- Revision:
- 0:bc51741ad0f9
completed BlinkButton2Sec
Who changed what in which revision?
User | Revision | Line number | New 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 | } |