exercise1

Committer:
mcalzana
Date:
Wed Nov 28 17:12:03 2018 +0000
Revision:
0:d063ac0284dc
exercise1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcalzana 0:d063ac0284dc 1 #include "mbed.h"
mcalzana 0:d063ac0284dc 2
mcalzana 0:d063ac0284dc 3 DigitalOut led1(LED1);
mcalzana 0:d063ac0284dc 4 InterruptIn button(USER_BUTTON);
mcalzana 0:d063ac0284dc 5 EventQueue queue(32 * EVENTS_EVENT_SIZE);
mcalzana 0:d063ac0284dc 6 Thread t;
mcalzana 0:d063ac0284dc 7 volatile static time_t begin;
mcalzana 0:d063ac0284dc 8 volatile static int pressCount = 0;
mcalzana 0:d063ac0284dc 9
mcalzana 0:d063ac0284dc 10 void blinkLed1(void){
mcalzana 0:d063ac0284dc 11 led1 = 1;
mcalzana 0:d063ac0284dc 12 wait(0.5);
mcalzana 0:d063ac0284dc 13 led1 = 0;
mcalzana 0:d063ac0284dc 14 }
mcalzana 0:d063ac0284dc 15
mcalzana 0:d063ac0284dc 16 void rise_handler_thread_context(void) {
mcalzana 0:d063ac0284dc 17 printf("Button pressed. count = %d\n", pressCount);
mcalzana 0:d063ac0284dc 18 if(pressCount == 1){
mcalzana 0:d063ac0284dc 19 begin = time(NULL);
mcalzana 0:d063ac0284dc 20 }else{
mcalzana 0:d063ac0284dc 21 pressCount = 0;
mcalzana 0:d063ac0284dc 22 if(time(NULL) - begin < 2){
mcalzana 0:d063ac0284dc 23 printf("Blinking");
mcalzana 0:d063ac0284dc 24 blinkLed1();
mcalzana 0:d063ac0284dc 25 }
mcalzana 0:d063ac0284dc 26 }
mcalzana 0:d063ac0284dc 27 }
mcalzana 0:d063ac0284dc 28
mcalzana 0:d063ac0284dc 29 void rise_handler_iterrupt_context(void) {
mcalzana 0:d063ac0284dc 30 pressCount += 1;
mcalzana 0:d063ac0284dc 31 queue.call(rise_handler_thread_context);
mcalzana 0:d063ac0284dc 32 }
mcalzana 0:d063ac0284dc 33
mcalzana 0:d063ac0284dc 34 int main() {
mcalzana 0:d063ac0284dc 35 // Start the event queue
mcalzana 0:d063ac0284dc 36 t.start(callback(&queue, &EventQueue::dispatch_forever));
mcalzana 0:d063ac0284dc 37 printf("Starting in context %p\r\n", Thread::gettid());
mcalzana 0:d063ac0284dc 38 // The 'rise' handler will execute in IRQ context
mcalzana 0:d063ac0284dc 39 button.rise(rise_handler_iterrupt_context);
mcalzana 0:d063ac0284dc 40 }