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
|
@ -49,7 +49,7 @@ uint16_t HAL_adc_result;
|
||||||
// ------------------------
|
// ------------------------
|
||||||
|
|
||||||
// Needed for DELAY_NS() / DELAY_US() on CORTEX-M7
|
// 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
|
// HAL pre-initialization task
|
||||||
// Force the preinit function to run between the premain() and main() function
|
// Force the preinit function to run between the premain() and main() function
|
||||||
// of the STM32 arduino core
|
// of the STM32 arduino core
|
||||||
|
|
|
@ -34,16 +34,17 @@
|
||||||
|
|
||||||
#if defined(__arm__) || defined(__thumb__)
|
#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/
|
// http://www.anthonyvh.com/2017/05/18/cortex_m-cycle_counter/
|
||||||
|
|
||||||
FORCE_INLINE static void enableCycleCounter() {
|
FORCE_INLINE static void enableCycleCounter() {
|
||||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||||
|
|
||||||
// Unlock DWT.
|
#if __CORTEX_M == 7
|
||||||
DWT->LAR = 0xC5ACCE55;
|
DWT->LAR = 0xC5ACCE55; // Unlock DWT on the M7
|
||||||
|
#endif
|
||||||
|
|
||||||
DWT->CYCCNT = 0;
|
DWT->CYCCNT = 0;
|
||||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||||
|
|
Loading…
Reference in a new issue