This saves a cycle - and checks both values to avoid _isr change of either value based on code/executionteensy4-core
| @@ -62,6 +62,17 @@ void delay(uint32_t msec) | |||
| // TODO... | |||
| } | |||
| uint32_t micros(void) | |||
| { | |||
| uint32_t ccdelta, usec, smc, scc; | |||
| do { | |||
| smc = systick_millis_count; | |||
| scc = systick_cycle_count; | |||
| } while ( smc != systick_millis_count || scc != systick_cycle_count ); // repeat if systick_isr | |||
| ccdelta = ARM_DWT_CYCCNT - scc; | |||
| usec = 1000*smc + (ccdelta/(F_CPU_ACTUAL/1000000)); | |||
| return usec; | |||
| } | |||
| uint32_t micros(void) | |||
| { | |||
| uint32_t ccdelta, usec, smc; | |||