///////////////////////////// // // prog_practice_9 project // timers.cpp // // 9/27/22 tj // // using timers // ////////////////////////////// #include "mbed.h" #include void splash(void); // ticker isr void tk_isr(void); // timeout isr void to_isr(void); // global variables for ISRs int tick_val = 0; int main(void){ setbuf(stdout, NULL); int i; // iterator int tmp; unsigned long long int loop_time; // 64 bit value required by timer tmp = 0; // create timer to measure for loop delay Timer T1; // create ticker to update count every second in an isr Ticker TK1; // create timeout object Timeout TO1; // splash splash(); ////////////////////////// // time a for loop that does nothing T1.start(); for(i = 0; i < 1000; i++){ tmp++; printf("bla, bla, bla\r"); } T1.stop(); loop_time = T1.elapsed_time().count(); printf("\n%i cycle for loop took: %llu us\n", tmp, loop_time); //////////////////////////// // start ticker TK1.attach(&tk_isr, 1000000us); while(tick_val < 12){ printf("ticker count: %-4i\r", tick_val); } // turn off ticker TK1.detach(); printf("\n"); ////////////////////////// // start timeout timer TO1.attach(&to_isr, 5000000us); tmp = 0; while(1){ printf("to: %i\r", tmp); tmp++; wait_us(500000); } return 0; }// end main void splash(void){ printf("\n\n Timer routines\n\n"); return; }// end splash void tk_isr(void){ tick_val++; return; }// end tk_isr void to_isr(void){ printf("\nTime out done\n"); return; }// end to_isr