新人求教計算代碼運行時間的方法

STM32常用:?

  • 1 使用Keil Debug功能

  • 2 使用邏輯分析儀或示波器等設(shè)備測量

  • 3 使用STM32自帶定時器進行測量

  • ...

  • 第一種方法在MounRiver沒找著類似功能.?

  • 第二種, 沒硬件設(shè)備

  • 第三種, 調(diào)用的是HAL的庫函數(shù), 請問在RiscV是否支持? 如果不支持, 有什么簡單的函數(shù)或者方法能實現(xiàn)?

  • 謝謝!


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

evt包里有定時器相關(guān)代碼,RTC部分在BLE目錄,自己找一下。


使用SysTick計算,?可以精確到每個時鐘周期,?開始測試代碼前將SysTick->VAL全置1, 24位的寫入0xFFFFFF,然后啟動,代碼跑完后讀取SysTick->VAL,?就可以計算代碼跑了多少個時鐘周期了


終于, 經(jīng)過幾天的摸索, 找到了一個適合自己的方法!!

在 debug.c 增加一個計時函數(shù), 然后在 debug.h 增加相應(yīng)的聲明函數(shù) 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;

}


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频