代码之家  ›  专栏  ›  技术社区  ›  MarkP

皮层M0上的计数周期+

  •  1
  • MarkP  · 技术社区  · 8 年前

    我有一块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;
    

    是否有方法计算周期(可能使用中断和计数器?)就像我可以查询毫秒(例如。 millis() 在Arduino上)?

    1 回复  |  直到 8 年前
        1
  •  1
  •   andy mango    8 年前

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