STM32常用:?
1 使用Keil Debug功能
2 使用邏輯分析儀或示波器等設(shè)備測量
3 使用STM32自帶定時器進行測量
...
第一種方法在MounRiver沒找著類似功能.?
第二種, 沒硬件設(shè)備
第三種, 調(diào)用的是HAL的庫函數(shù), 請問在RiscV是否支持? 如果不支持, 有什么簡單的函數(shù)或者方法能實現(xiàn)?
謝謝!
STM32常用:?
1 使用Keil Debug功能
2 使用邏輯分析儀或示波器等設(shè)備測量
3 使用STM32自帶定時器進行測量
...
第一種方法在MounRiver沒找著類似功能.?
第二種, 沒硬件設(shè)備
第三種, 調(diào)用的是HAL的庫函數(shù), 請問在RiscV是否支持? 如果不支持, 有什么簡單的函數(shù)或者方法能實現(xiàn)?
謝謝!
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;
}