CCS的一些问题(转帖)
?
CCS的一些問題(轉(zhuǎn)帖)
CCS版本:V3.1
1.run和animate的區(qū)別
如果沒有斷點的話,這兩個沒區(qū)別.
如果有斷點,那么run的時候到斷點會停止,直到再次按run或者F5才繼續(xù)執(zhí)行.
而Animate到斷點的時候,會停一小會,將所有窗口刷新一遍,然后就繼續(xù)執(zhí)行
一般就是在要看數(shù)據(jù)變化的時候,先把曲線畫出來,然后在改變數(shù)據(jù)的循環(huán)里面設個斷點,然后用animate,就能看到圖片動態(tài)改變了,可以參考Help->tutorial里面的"Code Composer Studio? IDE"->"Using Debug Tools"這一個教程
2.Probe Point 和Breakpoints的區(qū)別和聯(lián)系
共性:他們都會暫停程序運行
區(qū)別:
1.Probe Point暫停程序,執(zhí)行一個設定的任務(如File I/O),然后繼續(xù)執(zhí)行程序.而BreakPoint暫停后必須手動繼續(xù)(當用run的時候)
2.BreakPoints會刷新所有窗口,而ProbePoint不會
3.Probe Point可以執(zhí)行一些任務(如File I/O),而BreakPoints就是純粹的停止.
3.阻塞(blocked)和中斷(interrupt)的區(qū)別和聯(lián)系
共性:他們都能停止一個tsk(任務,具體見我的另一篇文章:關于tsk和mbx)的執(zhí)行
區(qū)別:
1.只有tsk(任務)能被阻塞,而swi(軟中斷)和hwi(硬中斷)不能阻塞,只能中斷
2.停止的原因不一樣,阻塞是在某些條件不滿足的時候停止tsk,中斷是因為有高優(yōu)先級的事情要做而停止
3.恢復運行的條件不一樣,阻塞是要等到原來不滿足的條件滿足后才能繼續(xù),而中斷是要等高優(yōu)先級的任務返回后才繼續(xù)執(zhí)行.
4.阻塞改變tsk的任務隊列,而中斷一個tsk不會改變tsk的任務隊列.
舉個現(xiàn)實的例子:
如果你在寫作業(yè),寫著寫著,碰到一道很難的題,你百思不得其解,這個時候?qū)懽鳂I(yè)的這個tsk就被阻塞了,只有等到你想出來這道題怎么做,才能繼續(xù)做下去.
另外一種情況,還是在寫作業(yè),突然門鈴響了,你必須去開門,那寫作業(yè)這個tsk就被中斷了,你開完門就能回來繼續(xù)寫作業(yè).
4.LOG_printf和printf的區(qū)別和聯(lián)系
共性:都是用于輸出一些內(nèi)容,一般用于顯示一些調(diào)試信息,而且可以格式化輸出,比如用'%d'輸出整數(shù)
區(qū)別:
1.輸出目標不同,printf輸出到output窗口,而LOG_printf輸出到BIOS的log窗口
2.匯編指令條數(shù)不同,printf需要上萬條匯編指令,而LOG_printf只要30多條匯編指令,因此LOG_printf的運行速度比printf要快的多,一般在實時系統(tǒng)中,都使用LOG_printf來輸出,這樣對系統(tǒng)的實時性影響才不大
3.參數(shù)個數(shù)不同,printf后面的參數(shù)個數(shù)可以有很多個(具體多少個沒測試過),而LOG_printf后面最多只能有4個參數(shù),第一個是寫入的地址,第二個是字符串,后面最多加上兩個格式化輸出的數(shù)據(jù),這兩個數(shù)據(jù)還必須是整型,或者指針,或者常量字符串
4.可以輸出的格式不同,printf有很多的格式,而LOG_printf只有有限的幾種.(%d整型,%x無符號16進制數(shù),%o無符號8進制數(shù),%s常量字符串,%p指針)
5.LOG_printf輸出的長度受設定的buffer大小限制,如果超出buffer大小,根據(jù)設置的不同,可以是停止輸出,或者覆蓋原來的內(nèi)容
6.LOG_printf的優(yōu)先級比較低,可能是在KNL層,只有系統(tǒng)比較空閑的時候,才會輸出,而printf是必然會輸出.(比如在一個i=1到100的循環(huán)中,用printf就會輸出100個數(shù),而用LOG_printf就只會輸出一部分數(shù),而且在沒有碰到斷點的時候,根本不會輸出,因為他的優(yōu)先級相當?shù)?只有在走到斷點的時候,系統(tǒng)才允許他執(zhí)行.)
5.設置tab的寬度
1.打開"Option -> Editor -> language"
2.在左邊的File Type里面選擇要修改的擴展名(CCS中每種不同擴展名的文件都能設置不同的tab寬度,而不是象一般的代碼編輯器,可以全局設置)
3.在右邊頂部選擇"Tabs/Indenting"選項卡
4.在"Tab Columns"下面的框中輸入"3 5"(默認值是5 9,注意兩個數(shù)值中間有空格)
5.點擊OK按鈕
解釋一下"3 5"的意義,第一個數(shù)字等于在一行的最開頭按Tab鍵時跳過的列數(shù)加1,第二個數(shù)減去第一個數(shù)的結果,等于除去每行最開頭外的Tab的寬度.
設置成"3 5"表示如果在每行開頭按Tab,縮進3-1=2列,而其它地方的縮進是5-3=2列,也就是無論什么地方Tab鍵的寬度都是2列.
個人覺得,CCS的這個設置Tab鍵寬度挺有意思的.
總結
以上是生活随笔為你收集整理的CCS的一些问题(转帖)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快递股票有哪些龙头股
- 下一篇: stepinto stepout ste