在單片機開發中,通常需要精確估算代碼運行時間,用於對算法優化以及對項目平台選擇提供參考,通常算法如果用匯編編寫,可以人工計算出運行時間,用C語言編寫也可以通過反匯編代碼而計算到較為精確的運行時間,但當程序中出現很多函數的調用,以及程序嵌套是,使用人工計算程序運行時間則比較費時費力。在CCS中可以對程序運行時間進行測量。CCS官方給出了兩種測試代碼運行時間的辦法,有興趣的可以閱讀一下官方文檔原文
1、Profile clock in CCS(此方法適用於非Stellaris系列,因為我的Stellaris用這種方法不行,我也就不說了,自己看看文檔,很簡單)
2、Watchpoints for Stellaris in CCS(此方法理論上使用TI所有單片機(包括Stellaris),我只測試了Stellaris,其他系列入MSP430有興趣的可以自己試試。我講的也是這種方法)
步驟:
1、現將程序編譯並Debug下載到開發板。然后點擊Window->Show View->Breakpoints
打開斷點窗口
然后在右上角(默認設置)窗口中會多出一個斷點窗口(默認有這個窗口可以跳過第一步)
2、點擊斷點下拉框選擇Count Event
下拉框
彈出提示框后選擇Clock Cycles,然后點擊OK
點擊OK
3、經過第二部后在讀斷點窗口中會多出一個Count Event斷點,在Count Event上鼠標點擊右鍵選擇Breakpoint Properties對此斷點進行配置。
右擊斷點
將Reset Count on Run改為true,點擊OK保存。
修改配置
4、將要測試的代碼代碼加上斷點,如圖,假如我要測試程序從1到2需要運行對少時間,則將1所在的行設置斷點同時把2設置斷點,此時可以看到斷點窗口多了兩個斷點。(注:此時Count Event顯示67941表示程序運行到main函數是已經運行了67941個時鍾周期(啟動代碼消耗),剛加進來Count Event是的計數值很大,那個值不准,重新Debug程序到開發板時因為之前已經添加了Count Event,所以計數是准的)
添加斷點
5、單擊運行按鈕當程序運行到第一個斷點時Count Event數值變為93210,說明從main函數運行到這一代碼之前一條代碼(斷點處代碼在程序暫停時還沒有運行)用了93210個時鍾周期,這個始終中期不包括之前啟動代碼運行消耗的67941個時鍾周期,因為之前設置了Reset Count on Run為True,所以每一次點擊運行按鈕這個值都會清零。
運行1
在此點擊運行按鈕,當程序運行到2處時自動暫停運行,此時看到count event 變為了229938,說明程序從1運行到2用了229938個時鍾周期。
6、運行時間計算
由第5步知道從代碼1到代碼2用了229938個機器中期,假如我設置看法板時鍾頻率為40Mhz,那這段代碼運行時間就是229938 * (1/(40*1000000)=0.00574845,約為5.75MS
