我有一块Cortex M0 +(SAML21)主板用于性能测试。我想测量一段代码所需的周期数。我尝试使用DWT(DWT_CONTROL
),但它从未产生结果;无论运行什么代码,它都会返回0个周期。
// enable the use DWT
*DEMCR = *DEMCR | 0x01000000;
// Reset cycle counter
*DWT_CYCCNT = 0;
// enable cycle counter
*DWT_CONTROL = *DWT_CONTROL | 1 ;
// some code here
// .....
// number of cycles stored in count variable
count = *DWT_CYCCNT;
有没有办法计算周期(可能有中断和计数器?),就像我可以查询毫秒(例如Arduino上的millis()
)一样?
答案 0 :(得分:1)
根据M0 +(core_cm0plus.h)的CMSIS头文件,核心调试寄存器只能通过调试访问端口访问,而不能通过处理器访问。我只能建议使用一些自由运行的计时器(也许是SysTick),或者你的调试器可以帮助你访问所需的寄存器。