#include "drv_dwt.h" #include "drv_clk.h" #define DWT_CR *(uint32_t *)0xE0001000 #define DWT_CYCCNT *(uint32_t *)0xE0001004 #define DEM_CR *(uint32_t *)0xE000EDFC #define DEM_CR_TRCENA (1 << 24) #define DWT_CR_CYCCNTENA (1 << 0) void drv_dwt_start(void) { //使能DWT外设 DEM_CR |= (uint32_t)DEM_CR_TRCENA; //DWT CYCCNT寄存器计数清0 DWT_CYCCNT = (uint32_t)0u; //使能Cortex-M3 DWT CYCCNT寄存器 DWT_CR |= (uint32_t)DWT_CR_CYCCNTENA; } uint32_t drv_dwt_end(void) { return (uint64_t)DWT_CYCCNT * 1000000 / CLOCK_SYS_FREQ; }