Cortex M3-M7 can use DWT->CYCCNT (#15762)
Suggested by Alex Kenis at https://youtu.be/ZfyPcdhQnAA?t=502
This commit is contained in:
parent
ad28da7eb4
commit
f0d952d33a
2 changed files with 6 additions and 5 deletions
|
@ -49,7 +49,7 @@ uint16_t HAL_adc_result;
|
|||
// ------------------------
|
||||
|
||||
// Needed for DELAY_NS() / DELAY_US() on CORTEX-M7
|
||||
#if (defined(__arm__) || defined(__thumb__)) && __CORTEX_M == 7
|
||||
#if (defined(__arm__) || defined(__thumb__)) && WITHIN(__CORTEX_M, 3, 7)
|
||||
// HAL pre-initialization task
|
||||
// Force the preinit function to run between the premain() and main() function
|
||||
// of the STM32 arduino core
|
||||
|
|
|
@ -34,16 +34,17 @@
|
|||
|
||||
#if defined(__arm__) || defined(__thumb__)
|
||||
|
||||
#if __CORTEX_M == 7
|
||||
#if WITHIN(__CORTEX_M, 3, 7)
|
||||
|
||||
// Cortex-M7 can use the cycle counter of the DWT unit
|
||||
// Cortex-M3 through M7 can use the cycle counter of the DWT unit
|
||||
// http://www.anthonyvh.com/2017/05/18/cortex_m-cycle_counter/
|
||||
|
||||
FORCE_INLINE static void enableCycleCounter() {
|
||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||
|
||||
// Unlock DWT.
|
||||
DWT->LAR = 0xC5ACCE55;
|
||||
#if __CORTEX_M == 7
|
||||
DWT->LAR = 0xC5ACCE55; // Unlock DWT on the M7
|
||||
#endif
|
||||
|
||||
DWT->CYCCNT = 0;
|
||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||
|
|
Reference in a new issue