计算Cortex M0 +上的循环次数

时间:2018-01-28 00:03:59

标签: arduino cycle cortex-m

我有一块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())一样?

1 个答案:

答案 0 :(得分:1)

根据M0 +(core_cm0plus.h)的CMSIS头文件,核心调试寄存器只能通过调试访问端口访问,而不能通过处理器访问。我只能建议使用一些自由运行的计时器(也许是SysTick),或者你的调试器可以帮助你访问所需的寄存器。