#IAR編譯器MAXQ2000評(píng)估板使用入門_第1頁(yè)
#IAR編譯器MAXQ2000評(píng)估板使用入門_第2頁(yè)
#IAR編譯器MAXQ2000評(píng)估板使用入門_第3頁(yè)
#IAR編譯器MAXQ2000評(píng)估板使用入門_第4頁(yè)
#IAR編譯器MAXQ2000評(píng)估板使用入門_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、IAR 編譯器和 MAXQ2000摘要:本應(yīng)用筆記說(shuō)明如何建立、構(gòu)建和調(diào)試面向評(píng)估板使用入門MAXQ? 平臺(tái)、以 C 語(yǔ)言編寫的應(yīng)用程序,并演示 MAXQ2000 的某些特性。引言MAXQ 平臺(tái)得到了世界一流工具的支持,例如 IAR 專為 MAXQ 系列提供的 “嵌入式工作臺(tái) ” (Embedded Workbench 。本應(yīng)用筆記說(shuō) 明如何建立、構(gòu)建和調(diào)試面向 MAXQ 平臺(tái)、以 C 語(yǔ)言編寫的應(yīng)用程序。本文還將演示 MAXQ2000 的某些特性, MAXQ2000 是 MAXQ 系列的第一款微控制器。本應(yīng)用采用專用于 MAXQ 平臺(tái)的 1.12B 版 IAR 編譯器編寫。這些指令在后續(xù)版本

2、的產(chǎn)品中仍會(huì)保留。這些指令可以在 MAXQ2000 評(píng)估 板上執(zhí)行。設(shè)置 MAXQ2000 評(píng)估板在開(kāi)始編寫代碼前,首先連接 MAXQ2000 評(píng)估板。該評(píng)估板應(yīng)含有 3 塊電路板,其中一個(gè)帶有小型 LCD 屏。最大的那個(gè)電路板 (圖 1 中 連接了 LCD 子板的 就是 MAXQ2000 評(píng)估板。我們將在本文后面討論它的特性。將 LCD 板連接至 MAXQ2000 評(píng)估板上標(biāo)有 J3 的端 子。剩下的一塊電路板是 JTAG 板。 MAXQ2000 裝載器和調(diào)試引擎采用 JTAG 協(xié)議通信。因?yàn)楹茈y找到通用的、用于個(gè)人計(jì)算機(jī)的商品化 JTAG 適配器, Dallas Semiconductor

3、提供了一個(gè)串行至 JTAG 轉(zhuǎn)換板。評(píng)估板還包括了一個(gè)小型連接器。如 圖 2 所示,使用該連接器來(lái)連接 MAXQ2000 評(píng)估板和 JTAG 板。通過(guò)電纜將 MAXQ2000 評(píng)估板上標(biāo)有 J4 的端子和 JTAG 電路板上標(biāo)有 P2 的端子連接在一起。 注意,連接電纜的紅邊應(yīng)在兩個(gè)板子上的引腳 “1”和“2”一側(cè)。/ 14MAXQ2000 評(píng)估板上有 3 個(gè)跳線。跳線 JU1 、JU2 和 JU3 上的引腳 1和2 應(yīng)跳接在一起。此外,確保晶體放置在 Y1 上(靠近板上的微 處理器 。本應(yīng)用筆記的演示程序默認(rèn)晶振頻率為 13.5MHz 。JTAG 板也含有 3個(gè)跳線。跳線應(yīng)放置在端子 JH1

4、、 JH2 和JH3 上。本裝置要求 5V 5%/300mA 的電源,插孔中心為正極。將電源插入 JTAG 板上的電源插孔 J2 。最后,需要將 PC 串口連接至 JTAG 板。采用一個(gè)標(biāo)準(zhǔn) 9 針直通串行電纜,將計(jì)算機(jī)的一個(gè)串口與 JTAG 板的串口相連 (注意:不要連接至 MAXQ2000 評(píng)估板的串口,具體參見(jiàn) 圖 3 的正確連接方式 。/ 14串行電纜的正確位置現(xiàn)在,我們就可以利用 IAR 工具開(kāi)始工作了IAR 編譯器使用入門 : Hello WorldIAR 提供了一個(gè)為 MAXQ 平臺(tái)設(shè)計(jì)、限定代碼尺寸的評(píng)估版編譯器,它們?cè)?MAXQ2000 評(píng)估板附帶的 CD 上。此外,也可以從

5、下載。按 照說(shuō)明來(lái)安裝、選擇默認(rèn)的安裝位置和選項(xiàng)。注意, IAR Embedded Workbench 產(chǎn)品僅適用于 Windows? 平臺(tái)。按照以下步驟從開(kāi)始菜單啟動(dòng) IAR Embedded Workbench:IAR SystemsIAR Embedded Workbench for MAXQIAREmbedded Workbench 。現(xiàn)在,我們就在 MAXQ2000 評(píng)估板上創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用。建立一個(gè)新的工作區(qū)。在 FILE 菜單下,選擇 NEW 。將出現(xiàn)一個(gè)對(duì)話框,顯示 Source/Text 和Workspace 選項(xiàng)。選擇 WORKSPACE ,單擊 OK 。出現(xiàn)一個(gè)文件對(duì)話

6、框,詢問(wèn)新工作區(qū)的名稱。確定保存新工作區(qū)的位置后,輸入工作區(qū)名稱。對(duì)于本項(xiàng)目,我 們稱其為 helloworld 。輸入工作區(qū)名稱后,單擊 SAVE 。一旦打開(kāi)工作區(qū)后,則需要建立一個(gè)項(xiàng)目。在 PROJECT 菜單下,選擇 CREATE NEW PROJECT 。將彈出另一個(gè)文件對(duì)話框。確定在下 拉框Tool Chain 中選擇 MAXQ 。輸入項(xiàng)目名稱,單擊 CREATE 按鈕。此項(xiàng)目名定為 helloproject 。現(xiàn)在項(xiàng)目建立完畢,我們還需要對(duì)其進(jìn)行配置,以便用于 MAXQ2000 評(píng)估板。在項(xiàng)目管理窗口中,右鍵單擊標(biāo)有 helloproject - Debug 的一行,單擊 OPTI

7、ONS 項(xiàng)(圖 4 。大部分默認(rèn)選項(xiàng)是恰當(dāng)?shù)?,但是需要修改部分設(shè)置。圖 4. 在項(xiàng)目上單擊右鍵在項(xiàng)目選項(xiàng)中,選擇 CATEGORY 下的 XLINK ,然后選擇 Include 標(biāo)簽。在對(duì)話框的最下面,選中標(biāo)有 Override Default 的框,然后 單擊下面編輯行右側(cè)的小按鈕 (標(biāo)著. 。將出現(xiàn)文件選擇對(duì)話框。選擇文件 lnkmaxq200 x.xcl 1,單擊 OPEN 。應(yīng)出現(xiàn)如 圖 5 所示的 項(xiàng)目選項(xiàng)對(duì)話框。/ 14圖 5. 為 MAXQ2000 設(shè)置正確的鏈接器選項(xiàng)現(xiàn)在,選擇 CATEGORY 下面的 C-SPY DEBUGGER 。在標(biāo)有 Driver 的下拉框下,選擇 J

8、TAG 。這就告訴 IAR Embedded Workbench 在真實(shí)硬件 (而不是在軟件仿真器 上調(diào)試應(yīng)用程序。同時(shí),確定 Device Description File 所選的是 $TOOLKIT_DIR$Configmaxq200 x.ddf。 圖 6 所示為該對(duì)話框窗口的正確配置。4 / 14圖 6. MAXQ2000時(shí)的調(diào)試器選項(xiàng)工作所需的最后一個(gè)項(xiàng)目選項(xiàng)在條目 JTAG 中,它是 CATEGORY 列表下的 C-SPY DEBUGGER 子條目。在標(biāo)有 COM Port: 的編輯框中,輸 入將與 MAXQ2000 評(píng)估板進(jìn)行通信的 PC COM 端口。通常為 COM1 或者 CO

9、M2 ,許多帶有 USB 串口適配器的用戶將使用 COM4 或者 序號(hào)更高的端口?,F(xiàn)在,已經(jīng)正確的配置了 IAR 工具,使其能夠與 MAXQ2000 評(píng)估板一起工作。單擊項(xiàng)目選項(xiàng)窗口中的 OK 按鈕。下一步,將需要為項(xiàng)目 建立源代碼。首先,開(kāi)始一個(gè)能夠觸發(fā) LED 的簡(jiǎn)單的 HelloWorld 型應(yīng)用程序。單擊工具條上的新文件按鈕 (工具條最左側(cè)的空白頁(yè) ,或者選擇 FILE 菜單下的 NEW 。選擇 SOURCE/TEXT ,單擊 OK 按鈕。標(biāo)有 Untitled1 的新窗口將出現(xiàn)。在新窗口中輸入以下代碼:#includevoid main(unsigned int counter1un

10、signed int counter2 PD0 = 0 xff 。 while (1for (counter1 = 0for (counter2 = 0。 counter1 0 xffff。 counter2 。 counter2+/ 14PO0 = PO0 0 xff 。單擊 Save 按鈕( 工具條上的磁盤圖標(biāo) ,或者從菜單上選擇 FILE SAVE ,保存文件。在出現(xiàn)的文件對(duì)話框中,輸入 demo.c 作為文件 名稱,單擊 save 。注意,文件 demo.c 并不出現(xiàn)在項(xiàng)目窗口中。在能夠構(gòu)建該項(xiàng)目之前,需要為該項(xiàng)目加入源文件。右鍵單擊項(xiàng)目窗口 中的helloproject - Debu

11、g行,選擇菜單中的 Add Files. 。當(dāng)文件對(duì)話框出現(xiàn)后,選擇文件 demo.c ,單擊 OPEN。現(xiàn)在,已經(jīng)加入源文件,可以進(jìn)行構(gòu)建了。在 PROJECT 菜單下,選擇選項(xiàng) REBUILD ALL 。屏幕下方的消息窗口中將輸出大量數(shù)據(jù),其結(jié)尾是:Total number of errors: 0Total number of warnings: 0如果出現(xiàn)任何錯(cuò)誤或者警告信息,請(qǐng)確定輸入代碼是否正確,是否按照項(xiàng)目設(shè)置說(shuō)明進(jìn)行操作。此處常出現(xiàn)的警告信息是last line of fileends without a new line。如果出現(xiàn)該錯(cuò)誤,則找到源代碼的最后一行,多次敲擊 EN

12、TER ,在最后的右括號(hào) ( 之后,建立幾個(gè)新行。成功構(gòu)建項(xiàng)目后,準(zhǔn)備運(yùn)行。確定 JTAG 板和 MAXQ2000 板已經(jīng)按照本文第一部分所述已經(jīng)連接并上電。同樣,對(duì)于第一次演示,需要 打開(kāi)能使 LED 段點(diǎn)亮的一個(gè)開(kāi)關(guān)。找到標(biāo)有 SW6 的開(kāi)關(guān),將第 8 個(gè)開(kāi)關(guān)打到 on (上部位置。運(yùn)行本項(xiàng)目,選擇 PROJECT 菜單,然后 選擇 DEBUG 選項(xiàng)。將出現(xiàn)一個(gè)窗口通知應(yīng)用程序正在下載。點(diǎn)擊執(zhí)行代碼第一行的第一個(gè)斷點(diǎn) PD0 = 0 xff 。 ,啟動(dòng)項(xiàng)目。我們將在以后研究 IAR Embedded Workbench 的調(diào)試選項(xiàng)?,F(xiàn)在,只 需點(diǎn)擊工具條的 GO按鈕(三個(gè)藍(lán)色箭頭 ,或者選

13、擇 DEBUG 菜單下的 GO。將看到大部分 LED 以每秒一次的頻率閃爍。我們已經(jīng)采用 IAR Embedded Workbench編譯、下載、運(yùn)行了首個(gè)為 MAXQ2000 評(píng)估板編寫的應(yīng)用。下一步,該實(shí)例程序?qū)⒆兊脧?fù)雜一些。然后,將討論 MAXQ2000 評(píng)估板的一些特性,以及 IAR Embedded Workbench 的某些調(diào)試特性。一個(gè)簡(jiǎn)單應(yīng)用:在 LCD 上顯示一個(gè)計(jì)數(shù)器現(xiàn)在已經(jīng)成功觸發(fā)了 LED ,下一步繼續(xù)處理更加復(fù)雜的 LCD 應(yīng)用程序。 MAXQ2000 微控制器具有一個(gè)集成的 132 段 LCD 控制器,以及 一個(gè)片內(nèi)電阻分壓器用于對(duì)比度控制。它還可以直接對(duì) LCD

14、屏供電。 MAXQ2000 評(píng)估板帶有一個(gè)簡(jiǎn)單的靜態(tài) LCD 屏,其上有 4 個(gè)數(shù)字 和一些簡(jiǎn)單的標(biāo)點(diǎn)符號(hào) (一對(duì)冒號(hào)和點(diǎn)號(hào),參見(jiàn) 圖7 。對(duì)于初次使用者,我們將編寫一個(gè)能夠在 LCD 上實(shí)現(xiàn)計(jì)數(shù)器的應(yīng)用程序。然后, 深入討論控制 LCD 的代碼,演示更復(fù)雜的實(shí)例。按照前面所述的步驟,建立一個(gè)新的工作區(qū)和項(xiàng)目 (注意,需要為該新項(xiàng)目重新輸入所有的 XLINK 、C-SPY和 JTAG 選項(xiàng)。 為該工作區(qū) 起名為 LCDDemo ,項(xiàng)目名為 SimpleLCD 。下載該實(shí)例的 源代碼 。將文件 lcdcounter.c 放在剛剛建立的 LCDDemo 項(xiàng)目目錄下。在 IAR 項(xiàng)目窗口中,右鍵單擊

15、標(biāo)有 SimpleLCD - Debug 的一行,選擇 Add Files. 。選擇剛剛加入的文件 lcdcounter.c ,然后單擊 OPEN。在運(yùn)行項(xiàng)目前,我們來(lái)查看一些比較重要的代碼段。首先,下拉至文件底部的 void main( 一行,此處是應(yīng)用程序的起始點(diǎn)。您將看到對(duì) LCD 的初始化 (函數(shù) initLCD ,然后進(jìn)入無(wú)限循環(huán) while (1 。主循環(huán)調(diào)用的函數(shù)在 LCD 屏幕上顯示一個(gè)數(shù)字。每執(zhí)行一次循環(huán),數(shù)值 計(jì)數(shù)增 1 ,如果超過(guò) LCD 能夠顯示的最大值 19999 ,則重新計(jì)數(shù)?,F(xiàn)在繼續(xù)運(yùn)行程序。單擊 DEBUG 按鈕(工具條的最右側(cè) ,或者選擇菜單中的 PROJEC

16、T DEBUG 。注意, IAR EmbeddedWorkbench 在將應(yīng)用程序裝入到評(píng)估板之前,自動(dòng)進(jìn)行構(gòu)建。我們將看到 IAR 顯示變?yōu)檎{(diào)試模式,在 void main( 代碼的第一行停止運(yùn) 行。點(diǎn)擊 GO 按鈕(三個(gè)藍(lán)色箭頭 ,查看顯示屏,它應(yīng)快速向上計(jì)數(shù)。如果觀察的時(shí)間足夠長(zhǎng),接近20000 時(shí),顯示將從頭開(kāi)始?,F(xiàn)在可以展示 MAXQ2000 評(píng)估板上非常有用的一個(gè)特性 RESET 按鈕。評(píng)估板左下側(cè)是標(biāo)有 SW2 和 RESET 的開(kāi)關(guān)。按下按鍵,觀 察 LCD 屏幕,它將立刻從 0 開(kāi)始顯示。該按鈕連接在微控制器的復(fù)位引腳上 如果需要重新啟動(dòng)應(yīng)用程序,則按該按鈕。MAXQ2000

17、 評(píng)估板特性現(xiàn)在已經(jīng)建立了使用 MAXQ2000 評(píng)估板 LCD 子板的應(yīng)用程序,讓我們仔細(xì)研究一下評(píng)估板的各個(gè)部分。我們不在此處涉及到評(píng)估板的所 有器件,在評(píng)估板附帶的 CD 中的 MAXQ2000 評(píng)估板原理圖和 MAXQ2000 Evaluate Kit Getting Started Guide 中有更詳細(xì)的信 息。LCD 子板現(xiàn)在, LCD 板已經(jīng)能夠運(yùn)轉(zhuǎn)。顯示段和公共極信號(hào)的產(chǎn)生受控于 MAXQ 微控制器的幾個(gè)寄存器。 LCD 子板的連接方式簡(jiǎn)化了對(duì)于 LCD 屏 的操作,向 4 個(gè)顯示位置中的任何一個(gè)寫入數(shù)碼非常容易。因?yàn)槊總€(gè) 7 段 LCD 數(shù)字的映射相同,因此,在代碼中包括了

18、下表,以幫助寫 入正確的 LCD 寄存器數(shù)值:/ 14#define LCD_PATTERN_0 0 x03F #define LCD_PATTERN_1 0 x006 #define LCD_PATTERN_2 0 x05B #define LCD_PATTERN_3 0 x04F #define LCD_PATTERN_4 0 x066 #define LCD_PATTERN_5 0 x06D #define LCD_PATTERN_6 0 x07D #define LCD_PATTERN_7 0 x007 #define LCD_PATTERN_8 0 x07F #define LCD_

19、PATTERN_9 0 x067int PATTERNS = LCD_PATTERN_0, LCD_PATTERN_1, LCD_PATTERN_2, LCD_PATTERN_3,LCD_PATTERN_4, LCD_PATTERN_5, LCD_PATTERN_6, LCD_PATTERN_7,LCD_PATTERN_8, LCD_PATTERN_9 int getLCDDigit(int digitreturn PATTERNSdigit利 用 getLCDDigit 函數(shù),可由以下代碼向控制器寫入數(shù)值:/* write the value 612 to the LCD screen */

20、LCD2 = getLCDDigit(6 。LCD1 = getLCDDigit(1 。LCD0 = getLCDDigit(2 。該 LCD 板還可以顯示小數(shù)點(diǎn)和冒號(hào),適用于時(shí)鐘、溫度顯示以及任何其他簡(jiǎn)單的數(shù)字顯示等。圖 7 是 LCD 子板各段的完整顯示以及用于 控制各段 LCD 顯示的寄存器位。圖 7. LCD 段至MAXQ2000 寄存器位的映射 按鍵MAXQ2000 評(píng)估板上有三個(gè)按鍵,兩個(gè)連接至外部中斷,一個(gè)連接至微控制器的復(fù)位信號(hào)。復(fù)位按鈕用于重新運(yùn)行應(yīng)用程序,如同前面 演示的 LCD 計(jì)數(shù)器所示。經(jīng)開(kāi)關(guān)使能后,其他兩個(gè)按鍵可連接至外部中斷。每個(gè)按鍵可連接至一對(duì)外部中斷。按鍵 1

21、在評(píng)估板上標(biāo)記為 SW4 ,可連接至端口 5 引 腳2 (外部中斷#10 或者端口 5 引腳3 (外部中斷#11 。按鍵 2在評(píng)估板上標(biāo)記為 SW5 ,可連接至端口 7引腳0 (外部中斷#14 或 者端口 7引腳 1 ( 外部中斷#15 。下表說(shuō)明了用于將按鍵連接至外部中斷引腳的開(kāi)關(guān)的使用。Switch (set to ON Connect push button To port pin. External Interrupt #SW6, switch 2Push Button 1 (SW4Port 5 Pin 210SW6, switch 3Push Button 1 (SW4Port 5

22、Pin 311SW6, switch 4Push Button 2 (SW5Port 7 Pin 014SW6, switch 5Push Button 2 (SW5Port 7 Pin 115/ 14注意,這些引腳還有其他功能,這就是為什么要對(duì)按鍵連接到哪個(gè)部中斷進(jìn)行選擇的原因。例如,端口7 引腳0和1 用于UART 0 串口發(fā)送和接收。如果將按鍵連接至這些引腳之一,則不利于使用 UART 0 的功能。請(qǐng)注意, MAXQ2000 含有兩個(gè) UART ,因此,決定如何配 置 MAXQ2000 評(píng)估板時(shí),可以有多個(gè)選擇。串行連接器MAXQ2000 評(píng)估板含有一個(gè) 9 針連接器和一個(gè) RS-232

23、 電平轉(zhuǎn)換器。因此,可以采用一條標(biāo)準(zhǔn)的直通串行電纜連接評(píng)估板和PC。這與連接串口至 JTAG 板的串行電纜相同。為能夠通過(guò)該串口讀取到達(dá)數(shù)據(jù), SW1 上的 3 號(hào)開(kāi)關(guān)必須置于 ON 的位置。注意,如果 P7.1 被用于外部中斷 ( 如果 SW6.5 置于 ON , 將產(chǎn)生沖突。要在該串口寫數(shù)據(jù), SW1 上的第 7 個(gè)開(kāi)關(guān)必須置于 ON 的位置。同樣,如果 P7.0 被用于外部中斷 (如果 SW6.4 置于 ON ,也將產(chǎn)生沖突。LED 面板在簡(jiǎn)單的 HelloWorld 式應(yīng)用程序中我們已經(jīng)使用了 LED 面板,現(xiàn)在仔細(xì)觀察一下面板的實(shí)際顯示。 圖 8 顯示了 LED 面板的每個(gè)亮條和 與

24、其相關(guān)的輸出引腳。圖 8.LED 至 MAXQ2000 寄存器位的映射/ 輸出方向控制。在第一個(gè)應(yīng)用程序?yàn)槟軌蛳?I/O 端口寫入數(shù)值,首先需要將端口 0 引腳方向設(shè)置為輸出。每個(gè)引腳具有一個(gè)獨(dú)立的輸入 中,由以下代碼來(lái)設(shè)置端口 0 所有的引腳為輸出:PD0 = 0 xff 。當(dāng)適當(dāng)?shù)?I/O 端口設(shè)置為輸出后, PO0 寄存器相應(yīng)位設(shè)置為 1 時(shí),該引腳對(duì)應(yīng)的 LED 被點(diǎn)亮。注意,組合開(kāi)關(guān) SW6 上的 8 號(hào)開(kāi)關(guān)必須 置于 ON 的位置,才能對(duì) LED 陣列供電。MAX1407MAXQ2000 評(píng)估板帶有一個(gè) MAX1407 ,它含有一個(gè) 4 通道 16 位模數(shù)轉(zhuǎn)換器,以及兩個(gè) 10 位

25、數(shù)模轉(zhuǎn)換器。 MAXQ2000 通過(guò)其片內(nèi) SPI? 主機(jī)與之通信。這樣, MAX1407 就成為連接 MAXQ2000 與外部真實(shí)世界信號(hào)的理想橋梁。網(wǎng)上 2 有一個(gè)使用熱敏電阻以及 MAXQ2000 評(píng)估板來(lái)實(shí)時(shí)顯示當(dāng)前溫度的實(shí)例程序。請(qǐng)查看該實(shí)例程序的源代碼,了解運(yùn)行該程序所需的硬件連接和配置。參見(jiàn): MAX1407 QuickView 數(shù)據(jù)資料使用 IAR 編譯器來(lái)調(diào)試應(yīng)用程序現(xiàn)在,轉(zhuǎn)向一個(gè)新的應(yīng)用程序,通過(guò)它我們來(lái)熟悉一下 IAR 調(diào)試工具。同前面一樣,建立一個(gè)新的工作區(qū)和項(xiàng)目,將工作區(qū)命名為 lcdtime ,項(xiàng)目名為 rtc_demo 。從本應(yīng)用筆記的下載源 3 添加源代碼文件

26、lcd_trc.c 。構(gòu)建該程序,點(diǎn)擊 DEBUG 按鈕將其裝入到 MAXQ2000 評(píng)估板。該程序?qū)嶋H是前面編寫的 LCD 計(jì)數(shù)器程序的擴(kuò)展。開(kāi)始運(yùn)行后,其 LCD 顯示與以前相似,快速顯示計(jì)數(shù)遞增。但是,按下 SW4 按鍵, 程序?qū)@示實(shí)時(shí)時(shí)鐘的當(dāng)前值。這看起來(lái)實(shí)用性較差,因?yàn)闀r(shí)間顯示幾乎都不正確。按下 SW5 按鈕幾次后,將看到分鐘遞增。如果同樣 需要增加小時(shí),不停的按該按鈕將使人疲倦。在這種情況下,可以按住 SW5 按鈕,然后按下 SW4 按鈕來(lái)增加小時(shí)。如果再次單獨(dú)按下 SW4 按鈕,將切換回計(jì)數(shù)器顯示。點(diǎn)擊 GO 按鈕(三個(gè)藍(lán)色箭頭 ,繼續(xù)運(yùn)行程序。反復(fù)操作幾次,熟悉該程序。一旦掌

27、握該程序后,我們將利用它來(lái)介紹一些IAR 調(diào)試工/ 14具。IAR 調(diào)試:暫停一個(gè)應(yīng)用程序程序正在運(yùn)行時(shí),按下工具條左側(cè)的紅色手形按鈕,或者選擇 DEBUG 菜單下的 BREAK ,這將使處理器停止運(yùn)行, IAR 將顯示你在應(yīng)用 程序中的當(dāng)前位置。程序暫停后,可以有幾種選擇。如果將鼠標(biāo)放在調(diào)試工具條的其他按鈕 (帶有藍(lán)色箭頭 上,保持一段時(shí)間,將彈出提示窗口,顯示該按鈕 的功能。較為常用的一些按鈕為:Step Over: 走過(guò)下一指令。如果下一指令是函數(shù)調(diào)用,按下此按鈕將不會(huì)進(jìn)入該函數(shù)。Step Into: 走入下一指令。如果下一指令是函數(shù)調(diào)用,按下該按鈕將進(jìn)入被調(diào)用的函數(shù)。Run to Cu

28、rsor: 運(yùn)行程序至光標(biāo)所在代碼的位置。這要比使用斷點(diǎn)功能來(lái)運(yùn)行至代碼的特定位置方便一些。Go: 使程序正常運(yùn)行。按下 pause 按鈕或者到達(dá)斷點(diǎn)后,程序停止運(yùn)行。IAR 調(diào)試:斷點(diǎn) 斷點(diǎn)功能使我們?cè)诔绦蜻\(yùn)行到特定位置后,能夠停止程序運(yùn)行。下面以實(shí)例說(shuō)明。如果程序仍在運(yùn)行,先停止它。找到代碼中的函數(shù) pushButtonInterrupt ,找到下面一行:IF (EIF1 & 0 x04右鍵單擊此行,從彈出菜單中選擇選項(xiàng) TOGGLE BREAKPOINT ( 不是選項(xiàng)Toggle Bookmark! 。該行左側(cè)空白位置將出現(xiàn)一個(gè)紅色的 X ?,F(xiàn)在,再次點(diǎn)擊 DEBUG 按鈕,按下 GO按

29、鈕,運(yùn)行程序。將看到 LCD 計(jì)數(shù)器運(yùn)行。按下 SW5 按鍵,計(jì)數(shù)器程序似乎停止了。如果回過(guò)頭來(lái)注意一下 IAR Embedded Workbench ,將看到程序已經(jīng)停止運(yùn)行,加入斷點(diǎn)的 一行被高亮顯示,如 圖 9 所示。/ 14斷點(diǎn)圖 9. 在 IAR Embedded Workbench中達(dá)到調(diào)試應(yīng)用程序時(shí),斷點(diǎn)是非常有用的工具。開(kāi)發(fā)人員通常希望了解代碼是否按要求執(zhí)行,或未被執(zhí)行。例如,如果按鍵中斷例程沒(méi)有正常 工作,我們將會(huì)考慮兩種可能 1 按鍵中斷例程代碼不正確,因此,得不到預(yù)期結(jié)果, 2 按鍵中斷代碼根本就沒(méi)有執(zhí)行。采用斷點(diǎn) 后,可以知道第 2 種情況是否發(fā)生,幫助我們決定應(yīng)在哪方

30、面花時(shí)間調(diào)試。IAR 調(diào)試:局部變量程序還停止在斷點(diǎn)上時(shí),打開(kāi) LOCALS 窗口(如果還沒(méi)有打開(kāi) ??赏ㄟ^(guò)選擇 VIEW 菜單下的 LOCALS 選項(xiàng)來(lái)打開(kāi)窗口。如果還停止在前 面所設(shè)置的斷點(diǎn)行上,則 locals 窗口應(yīng)如下所示:/ 1410. IAR Embedded Workbench的局部變量窗口注意到有兩個(gè)條目: temp 和 time 。 temp 變量用于顯示 PI7 寄存器的數(shù)值。注意另一條目 time 的表達(dá)。這意味著該變量不在當(dāng)前視野 之內(nèi)它或者沒(méi)有賦值,或者其數(shù)值不會(huì)再被函數(shù)使用??梢詸z查變量中不正確的數(shù)LOCALS 窗口顯示了應(yīng)用中止處所在函數(shù)中所聲明且使用的變量。這

31、是了解程序當(dāng)前狀態(tài)的強(qiáng)有力工具 值,還可以根據(jù)變量值判斷程序下一步的去向。LOCALS 窗口的功能不僅這些 在程序執(zhí)行期間,還可以修改變量值。單擊 temp 值(可能是 1 ,輸入一個(gè)新的整數(shù)值,則修改了運(yùn)行 程序的狀態(tài)。這可以幫助開(kāi)發(fā)人員查看其程序?qū)Σ煌斎氲姆磻?yīng),而不必重新構(gòu)建和裝載程序。IAR 調(diào)試: Watch 窗口程序暫停時(shí),打開(kāi) WATCH 窗口(VIEW WATCH 。在 expression 下,輸入 pbcount 。WATCH 窗口中應(yīng)出現(xiàn)數(shù)值 1 ( 除非按下了其 他鍵,使程序再次運(yùn)行 。 Watch 窗口使我們能夠隨意輸入任意表達(dá)式,并顯示該表達(dá)式的計(jì)算數(shù)值。在本例中,

32、我們輸入了一個(gè)全局變 量名,它告訴我們按鍵中斷代碼被執(zhí)行了幾次。 Watch 窗口的作用還不僅如此 在 WATCH 窗口中,再次單擊 pbcount ,輸入 pbcount 0 x05 。IAR Embedded Workbench將計(jì)算該表達(dá)式 (pbcount 值與 5 異或 ,顯示結(jié)果為 (4 。圖 11. IAR Embedded Workbench 中表達(dá)式的 Watch 窗口IAR 調(diào)試: Call Stack打開(kāi) call Stack (VIEWCALL STACK 。 Call Stack 顯示代碼執(zhí)行到當(dāng)前位置已調(diào)用過(guò)的函數(shù)。此時(shí),因?yàn)檎陧憫?yīng)一個(gè)中斷,只顯示 pushBut

33、tonInterrupt( (以及一些調(diào)試信息 。單步調(diào)試該程序,查看該窗口的反應(yīng)。向下找到標(biāo)有中斷 15 的代碼段下面的showTime( 行??梢园聪?STEP OVER 幾次,或者右鍵單擊該行,選擇 RUN TO CURSOR 。此時(shí), showTime( 行被高亮顯示。按下 STEP INTO 按鈕,將看到 showTime( 函數(shù)的第一行代碼被高亮顯示。再次查看 Call Stack 現(xiàn)在, showTime( 函數(shù)顯示在第一 行,其后是 pushButtonInterrupt( 。因?yàn)檫@是一個(gè)堆棧,現(xiàn)在執(zhí)行的函數(shù)被首先列出,其后是調(diào)用該函數(shù)的函數(shù),再后是更上一層的 調(diào)用函數(shù),等等。

34、/ 14圖12. IAR Embedded Workbench中的 Call stack 窗口圖 13. IAR Embedded Workbench 顯示的 Memory 內(nèi)容IAR 調(diào)試: Memory 窗口IAR Embedded Workbench 允許我們察看正在執(zhí)行應(yīng)用程序的器件的內(nèi)部存儲(chǔ)器。選擇 VIEW MEMORY 來(lái)查看 Memory 窗口。窗 口首次打開(kāi)時(shí),可能會(huì)顯示代碼段的存儲(chǔ)器內(nèi)容。單擊下拉框,你會(huì)看到用于顯示的存儲(chǔ)器類型選項(xiàng)。選擇 Data 選項(xiàng)來(lái)查看 MAXQ2000 片內(nèi) RAM 的內(nèi)容。與 LOCALS 窗口相似,我們也可以直接在這里修改 RAM 的數(shù)值。加亮

35、某個(gè)位置,輸入你所希望的新 16 進(jìn)制數(shù)值。與 LOCALS 窗口一 樣,這是個(gè)非常有用的工具,便于開(kāi)發(fā)人員修改程序狀態(tài)而無(wú)須重新構(gòu)建和裝入應(yīng)用程序。IAR 調(diào)試: Register 窗口Register 窗口(VIEW REGISTER 與 Memory 窗口相似。該窗口顯示 MAXQ2000 的寄存器映射。出現(xiàn)的第一個(gè)寄存器是 MAXQ 平 臺(tái)的核心寄存器,例如累加器、數(shù)據(jù)指針和循環(huán)計(jì)數(shù)器等。單擊下拉框,可以看到其他幾個(gè)選項(xiàng)。例如,如果選擇 Port I/O 寄存器,你就 可以看到并編輯與 MAXQ2000 輸入 / 輸出端口相關(guān)的所有寄存器。/ 1414. IAR Embedded Workbench顯示的 Register 內(nèi)容開(kāi)發(fā)支援對(duì)于 MAXQ 平臺(tái)的開(kāi)發(fā)者,我們提供了多種資源予以支持。其中之一是由 Dallas Semiconductor 開(kāi)發(fā)人員管理的在線論壇,解答用戶 提交的問(wèn)題,同時(shí)也是開(kāi)發(fā)人員發(fā)布消息的窗口,提供最新的工具信息和相關(guān)的其他問(wèn)題。請(qǐng)?jiān)L問(wèn)主頁(yè),進(jìn)行注

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論