STM32常用:
1 使用Keil Debug功能
2 使用逻辑分析仪或示波器等设备测量
3 使用STM32自带定时器进行测量
...
第一种方法在MounRiver没找着类似功能.
第二种, 没硬件设备
第三种, 调用的是HAL的库函数, 请问在RiscV是否支持? 如果不支持, 有什么简单的函数或者方法能实现?
谢谢!
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;
}