新人求教计算代码运行时间的方法

STM32常用: 

  • 1 使用Keil Debug功能

  • 2 使用逻辑分析仪或示波器等设备测量

  • 3 使用STM32自带定时器进行测量

  • ...

  • 第一种方法在MounRiver没找着类似功能. 

  • 第二种, 没硬件设备

  • 第三种, 调用的是HAL的库函数, 请问在RiscV是否支持? 如果不支持, 有什么简单的函数或者方法能实现?

  • 谢谢!

evt包里有定时器相关代码,RTC部分在BLE目录,自己找一下。


使用SysTick计算, 可以精确到每个时钟周期, 开始测试代码前将SysTick->VAL全置1, 24位的写入0xFFFFFF,然后启动,代码跑完后读取SysTick->VAL, 就可以计算代码跑了多少个时钟周期了


终于, 经过几天的摸索, 找到了一个适合自己的方法!!

在 debug.c 增加一个计时函数, 然后在 debug.h 增加相应的声明函数 double millis(void). 

以后就和 Arduino 一样,只要在需要计时的程序段前后分别记录下 millis 的返回值, 就能知道该程序段所占用的时间了! 哈哈


具体代码如下:

// return system tick time in millis seconds

double millis(void){

   double return_value;

    if (SysTick -> CTLR  & 0x1) { // SysTick is ON

        return_value = SysTick->CNT;

        SysTick-> CTLR = 0;  //Stop SysTick

        return_value = return_value/(SystemCoreClock/8000.0);

        return return_value;

    }

    else {  //SysTick is OFF

        SysTick->CNT = 0;

        SysTick->CTLR = 0x1; //Start SysTick

    }

    return 0;

}


只有登录才能回复,可以选择微信账号登录