在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏

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

            5.1.4 編譯程序
            程序代碼寫(xiě)好之后就進(jìn)入編譯程序階段,可以通過(guò)菜單,工具欄和浮動(dòng)菜單多種方式來(lái)發(fā)起編譯過(guò)程,也可以通過(guò)批處理文件進(jìn)行,關(guān)于這個(gè)批處理文件在Output標(biāo)簽頁(yè)的設(shè)置中提到過(guò)。


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


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


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

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

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

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


            常用的Debug菜單命令如下所示:
              Start/Stop Debug Session:開(kāi)始或者停止調(diào)試。
              Run:一直執(zhí)行下一個(gè)活動(dòng)的斷點(diǎn)。
              Step:?jiǎn)尾綀?zhí)行。
              Step Over:過(guò)程單步執(zhí)行,即將一個(gè)函數(shù)作為一個(gè)語(yǔ)句來(lái)執(zhí)行。
              Step out of current Function:跳出當(dāng)前的函數(shù)。
              Run to Cursor line:執(zhí)行到光標(biāo)所在的行。
              Stop Running:停止運(yùn)行。
              Breakpoints:打開(kāi)斷點(diǎn)對(duì)話框。
              Insert/Remove Breakpoint:在當(dāng)前行插入/刪除一個(gè)斷點(diǎn)。
              Enable/Disable Breakpoint:激活當(dāng)前行的斷點(diǎn)或者使斷點(diǎn)無(wú)效。
              Disable All Breakpoints:使程序中所有的斷點(diǎn)都無(wú)效。
              Kill all Breakpoints:刪除程序中所有的斷點(diǎn)。


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

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


            圖5.26中的Expression后的編輯框用于輸入表達(dá)式,該表達(dá)式用于確定程序停止運(yùn)行的條件,功能強(qiáng)大,涉及到uVision3內(nèi)置的一套調(diào)試算法,這里不做詳細(xì)說(shuō)明,請(qǐng)查閱相關(guān)幫助文檔。

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


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


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


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


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


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


            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉