<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32開發(fā)環(huán)境(工具)之Keil MDK 介紹

          STM32開發(fā)環(huán)境(工具)之Keil MDK 介紹

          作者: 時間:2016-11-27 來源:網(wǎng)絡 收藏

          雙擊列表中的項可以對該項進行重命名操作,點擊空白處可以添加新的項,虛方框按鈕也可以添加新的項,紅叉表示刪除選中的項,上下箭頭用于調整當前選中項在列表中的位置,“Add Files”可以添加新的源文件,操作過程和前面添加文件的操作是一樣的。

          5.1.4 編譯程序
          程序代碼寫好之后就進入編譯程序階段,可以通過菜單,工具欄和浮動菜單多種方式來發(fā)起編譯過程,也可以通過批處理文件進行,關于這個批處理文件在Output標簽頁的設置中提到過。


          紅線圈起來的區(qū)域就是對應的菜單編譯命令和工具欄編譯命令。各命令的含義如下:
            Clean target:清除編譯結果。
            Build target:編譯被修改的文件并且編譯應用程序。
            Rebuild all target files:重新編譯所有的源文件并且編譯應用程序。
            Batch Build:通過前面輸出的批處理文件進行編譯。
            Translate **.*:編譯某個源文件,**.*代表要編譯的源文件。
            Stop build:只有編譯進行過程中這一項才有效。
          通過在工程窗口“Target 1”上點擊右鍵,也可以彈出相應的編譯菜單,各命令含義和上面一致。


          現(xiàn)在就讓我們來編譯我們的“HelloWorld”,如下圖所示,編譯的結果會在輸出窗口顯示。


          很遺憾,有不少錯誤,也許你早就發(fā)現(xiàn)我們的代碼中使用了很多我們沒有定義的而且也不屬于標準C的一些函數(shù),沒錯這就是ST固件庫給我們提供的函數(shù),我們要做的就是把固件庫添加到我們的工程中,和其他的開發(fā)環(huán)境一下,我們可以直接添加固件庫的源文件和工程一起編譯,也可以通過添加已經編譯好的靜態(tài)連接庫(*.lib)文件。這里我們以后者為例,這些庫在我們安裝好Keil開發(fā)環(huán)境的時候已經提供了,路徑一般在你安裝目錄下的ARM/RV31/LIB/中,例如我這里的路徑是D:/Keil/ARM/RV31/LIB/ST。這里我們將添加一個新的Group,取名為FWLIB。然后將庫文件添加到這個Group中,具體的操作過程可以參照編寫源程序章節(jié)。添加庫之后我們再次編譯。

          問題解決了,當出現(xiàn)“0 Error(s), 0 Warning(s)”的時候也就意味著我們的程序已經通過了語法檢查,有時候一些Warning也不影響程序執(zhí)行,但是我們要慎重對待,仔細分析每一個Warning。如果是源程序中有語法錯誤或者警告,我們可以通過雙擊輸出窗口的該行,快速定位到出錯的位置。

          5.1.5 調試程序
          編譯通過只是說明我們的代碼沒有語法錯誤,至于源程序中存在的其他錯誤,必須通過調試才能發(fā)現(xiàn)并解決,事實上,除了極簡單的程序以外,絕大部分的程序都要通過反復調試才能得到正確的結果,因此,調試是軟件開發(fā)接下來我們需要運行我們的程序來驗證是否達到了預期的目的。也就是程序調試,程序調試往往是程序開發(fā)過程中最難的階段,尤其是對一些比較大型的程序。下面我們就來看看uVision3對調試的支持。

          5.1.5.1 常用的調試命令
          在對工程成功進行匯編、連接之后,按Ctrl+F5或者使用菜單Debug->Start/Stop Debug Session即可進入調試狀態(tài)。進入調試狀態(tài)后,界面與編輯狀態(tài)相比有明顯的變化,Debug才單項中原來不能用的命令現(xiàn)在已經可以使用了,工具欄會多出一個用于運行和調試的工具欄,如下圖所示,Debug菜單上的大部分命令可以在此找到對應的快捷按鈕。


          常用的Debug菜單命令如下所示:
            Start/Stop Debug Session:開始或者停止調試。
            Run:一直執(zhí)行下一個活動的斷點。
            Step:單步執(zhí)行。
            Step Over:過程單步執(zhí)行,即將一個函數(shù)作為一個語句來執(zhí)行。
            Step out of current Function:跳出當前的函數(shù)。
            Run to Cursor line:執(zhí)行到光標所在的行。
            Stop Running:停止運行。
            Breakpoints:打開斷點對話框。
            Insert/Remove Breakpoint:在當前行插入/刪除一個斷點。
            Enable/Disable Breakpoint:激活當前行的斷點或者使斷點無效。
            Disable All Breakpoints:使程序中所有的斷點都無效。
            Kill all Breakpoints:刪除程序中所有的斷點。


          學習程序調試,必須明確兩個重要的概念,即單步執(zhí)行與全速執(zhí)行。全速執(zhí)行是指一行程序執(zhí)行完了以后緊接著執(zhí)行下一行程序,中間不停止,這樣程序執(zhí)行的速度就很快,并可以看到該段程序執(zhí)行的總體效果,即最終結果正確還是錯誤,但如果程序有錯,則難以確認錯誤出現(xiàn)在哪些程序行。單步執(zhí)行是每次執(zhí)行一行程序,執(zhí)行完該行程序執(zhí)行完以后即停止,等待命令執(zhí)行下一行程序,此時我們可以觀察該行程序執(zhí)行完以后得到的結果,是否與我們寫程序行所想要得的結果相同,借此可以找到程序中問題所在。程序調試中,這兩種運行方式都要用到,要靈活應用,可以大大提高調試效率。
          在調試窗口中,我們可以看到一個黃色的調試箭頭,指向了當前執(zhí)行到的程序行。

          5.1.5.2 斷點設置
          程序調試時,有些程序行往往很難確認什么時候能夠執(zhí)行到,這類問題就不適合單步調試,這是我們需要使用程序調試中另一種非常重要的方法——斷點設置。斷點設置的方法有多種,常用的是在某一程序行設置斷點,設置好斷點之后可以全速運行程序,一旦執(zhí)行到該程序行即停止,可在此觀察有關的變量值,以確定問題所在。設置斷點的命令請參考上一節(jié)常用調試命令介紹。一旦某一行被設置了斷點,我們可以在程序行的左端看到一個紅色方框(如圖5.24調試窗口圖所示),如果該斷點被禁用,方框將會變?yōu)榘咨?br />除了在某程序行設置斷點這一基本方法以外,uVision3還提供了多種設置斷點的方法,按Debug->Breakpoints,即出現(xiàn)一個對話框,該對話框用于對斷點進行詳細的設置,如下圖所示。


          圖5.26中的Expression后的編輯框用于輸入表達式,該表達式用于確定程序停止運行的條件,功能強大,涉及到uVision3內置的一套調試算法,這里不做詳細說明,請查閱相關幫助文檔。

          5.1.5.3 調試窗口
          前面講了調試的一些方法,里面多次提到檢查程序的執(zhí)行狀態(tài)。調試窗口就是用于查看程序執(zhí)行狀態(tài)的。uVision3提供了多種調試窗口,如寄存器窗口,存儲器窗口,反匯編窗口,外設窗口等,下面將會一一作介紹。


          1. 寄存器窗口
          圖5.26是工程窗口寄存器頁的內容,寄存器頁包含了當前所有的工作寄存器和系統(tǒng)寄存器,每當程序中執(zhí)行到對某個寄存器的操作時,該寄存器會反色顯示,用鼠標單擊然后按F2(鼠標連續(xù)單擊兩次),即可修改該值。
          2. 存儲器窗口
          存儲器窗口可以顯示系統(tǒng)中各種內存中的值,通過在Address后的編輯框中輸入“字母:數(shù)字”即可顯示相應內存值,其中字母C、D、I、X,分別代表代碼存儲空間、直接尋址的片內存儲空間、間接尋址的片內存儲空間、擴展的外部RAM單元值、鍵入C:0即可顯示從0開始的ROM單元中的值,即查看程序的二進制代碼。該窗口的顯示值可以以各種形式顯示,如十進制、十六進制、字符型等。改變顯示方式的方法是點鼠標右鍵,在彈出的快捷菜單中選擇。除了顯示,還可以修改內存中的值,如下圖所示。


          3. 查看和調用棧窗口
          這個窗口可以幫助我們查看當前調用樹的情況,我們還可以通過這個窗口查看和修改一些變量的值。鼠標停留在某個變量的時候點右鍵,在彈出的浮動菜單中選擇Add ***to Watch window,Local 窗口顯示當前一些局部變量的值,變量值的現(xiàn)實方式可以在十六進制和十進制之間切換,方式是在查看窗口點右鍵,在某個變量的Value欄用鼠標單擊然后按F2(鼠標連續(xù)單擊兩次),即可修改該值。如下圖所示。


          4. 反匯編窗口
          點擊View->Dissambly Window可以打開反匯編窗口,該窗口可以顯示反匯編后的代碼、源代碼和相應反匯編代碼的混合代碼,可以在該窗口進行在線匯編、利用該窗口跟蹤已找行的代碼、在該窗口按匯編代碼的方式單步執(zhí)行。點擊鼠標右鍵,出現(xiàn)快捷菜單,如圖5.29所示,其中Mixed Mode是以混合方式顯示,Assembly Mode是以返回編碼方式顯示。


          5. 外設窗口
          為了能夠比較直觀地了解單片機中各種外設的使用情況,uVison3提供了一個外圍接口對話框。通過Peripherals菜單,下拉菜單中的內容和你選擇的芯片有關,會列出你所選擇的芯片上所有的外設。選擇一項你可以進入查看或修改該外設的一些狀態(tài)。例如在這里我們是通過GPIO中的PB9來控制LED閃爍,我們可以打開GPIOB的狀態(tài)對換框,如圖5.30所示。


          現(xiàn)在我們可以調試我們的HelloWorld了。程序運行時,你將看到開發(fā)板上的L1不停閃爍。


          上一頁 1 2 3 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();