0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

IAR編譯器和MAXQ2000評(píng)估板入門(mén)

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:ADI ? 2023-03-02 14:18 ? 次閱讀

應(yīng)用筆記描述了如何創(chuàng)建、構(gòu)建和調(diào)試用C語(yǔ)言編寫(xiě)的、針對(duì)MAXQ?平臺(tái)的應(yīng)用。演示了MAXQ2000的一些特性。

介紹

MAXQ平臺(tái)由一套世界級(jí)的工具支持,即IAR的MAXQ嵌入式工作臺(tái)。本應(yīng)用筆記描述了如何創(chuàng)建、構(gòu)建和調(diào)試用C語(yǔ)言編寫(xiě)的面向MAXQ平臺(tái)的應(yīng)用。本文還將演示MAXQ2000的一些特性,MAXQ<>是MAXQ系列的首款微控制器

本應(yīng)用筆記使用MAXQ平臺(tái)IAR編譯器1.12B版編寫(xiě)。這些說(shuō)明也適用于產(chǎn)品的更高版本。這些指令用于MAXQ2000評(píng)估板。

設(shè)置MAXQ2000評(píng)估板

在開(kāi)始編寫(xiě)代碼之前,我們先連接MAXQ2000評(píng)估板。該套件應(yīng)隨附 3 塊板,一塊帶有小型 LCD 屏幕。最大的電路板(如圖1所示,連接LCD子板)是實(shí)際的MAXQ2000評(píng)估板。我們將在本文檔后面討論該板的功能。拿起LCD板,連接到標(biāo)有J2000的MAXQ3評(píng)估板上的接頭。

pYYBAGQAP72AS7zQAACClThiIFM233.jpg


圖1.MAXQ2000評(píng)估板,附有LCD板。

評(píng)估套件中的剩余電路板是JTAG板。MAXQ2000加載器和調(diào)試引擎使用JTAG協(xié)議進(jìn)行通信。由于幾乎沒(méi)有用于個(gè)人計(jì)算機(jī)的通用商用JTAG適配器,達(dá)拉斯半導(dǎo)體公司提供了串行到JTAG轉(zhuǎn)換器板。評(píng)估套件還應(yīng)包含一個(gè)小型連接器。使用該連接器連接MAXQ2000評(píng)估板和JTAG板,如圖2所示。電纜將MAXQ4評(píng)估板上標(biāo)有J2000的針座連接到JTAG板上標(biāo)有P2的針座。請(qǐng)注意,連接器的紅色一側(cè)位于兩塊板上標(biāo)記為引腳“1”和“2”的一側(cè)。

poYBAGQAP7-Ab5qjAABraBU4zkc964.jpg


圖2.MAXQ2000評(píng)估板連接到JTAG板。

MAXQ3評(píng)估板上應(yīng)放置2000個(gè)跳線。接頭 JU1、JU2 和 JU1 上的引腳 2 和 3 應(yīng)一起跳線。此外,請(qǐng)確保晶體放置在Y1處(靠近板上的微處理器)。本應(yīng)用筆記中的演示程序假設(shè)晶體為13.5Mhz。JTAG板還應(yīng)放置3個(gè)跳線。跳線應(yīng)放置在接頭 JH1、JH2 和 JH3 上。

此設(shè)置中使用的電源輸出 5V ±5% DC 和 300mA,中心正極。將電源插入JTAG板上的電源插孔J2。

最后,我們需要將PC串行端口連接到JTAG板。使用普通的9針直通串行電纜將計(jì)算機(jī)上的一個(gè)串行端口連接到JTAG板上的串行端口(注意:不要連接到MAXQ2000評(píng)估板上的串行端口...有關(guān)正確連接的詳細(xì)信息,請(qǐng)參閱圖 3)。

pYYBAGQAP8CAY9h-AAB-XcmvChE599.jpg


圖3.串行電纜的正確位置,連接到JTAG板。

我們現(xiàn)在已準(zhǔn)備好開(kāi)始使用 IAR 工具。

IAR 編譯器入門(mén):Hello World

IAR為MAXQ平臺(tái)提供了一個(gè)代碼大小有限的編譯器的評(píng)估副本。MAXQ2000評(píng)估板隨附的CD提供。此外,還可以從 http://www.iar.com 下載評(píng)估副本。按照說(shuō)明進(jìn)行安裝,選擇安裝位置和選項(xiàng)的默認(rèn)值。請(qǐng)注意,IAR 嵌入式工作臺(tái)產(chǎn)品僅適用于 Windows? 平臺(tái)。

通過(guò)“開(kāi)始”菜單中的鏈接啟動(dòng)IAR嵌入式工作臺(tái):IAR系統(tǒng)IAR嵌入式工作臺(tái),用于MAXQ IAR嵌入式工作臺(tái)?,F(xiàn)在我們將為MAXQ2000評(píng)估板創(chuàng)建一個(gè)簡(jiǎn)單的應(yīng)用。

創(chuàng)建新工作區(qū)。在“文件”下,選擇“新建”。將出現(xiàn)一個(gè)對(duì)話框,為您提供“源/文本”和“工作區(qū)”之間的選擇。選擇工作區(qū),然后單擊確定。將出現(xiàn)一個(gè)文件對(duì)話框,要求您輸入新工作區(qū)的名稱。瀏覽到要保存新工作區(qū)的位置,然后輸入工作區(qū)名稱。對(duì)于這個(gè)項(xiàng)目,我們將工作空間稱為“helloworld”。輸入工作區(qū)名稱后,單擊保存。

打開(kāi)工作區(qū)后,我們需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目。在“項(xiàng)目”菜單下,選擇“創(chuàng)建新項(xiàng)目”。將彈出另一個(gè)文件對(duì)話框。確保在下拉框“工具鏈”下選擇了MAXQ。輸入項(xiàng)目的名稱,然后單擊“創(chuàng)建”按鈕。我們將我們的項(xiàng)目稱為“helloproject”。

現(xiàn)在我們已經(jīng)創(chuàng)建了一個(gè)項(xiàng)目,我們需要將其配置為與MAXQ2000評(píng)估板一起使用。在項(xiàng)目管理器窗口中,右鍵單擊顯示“helloproject - 調(diào)試”的行,然后單擊“選項(xiàng)”項(xiàng)(圖 4)。大多數(shù)默認(rèn)選項(xiàng)都可以,但我們需要更改一些設(shè)置。

poYBAGQAP8GAAY_1AAAddDo8FC4003.gif


圖4.右鍵單擊項(xiàng)目。

在項(xiàng)目選項(xiàng)中,選擇“類別”下的“云易”,然后選擇“包括”選項(xiàng)卡。在對(duì)話框底部,選中標(biāo)有“覆蓋默認(rèn)值”的框,然后單擊下面編輯行右側(cè)的小按鈕(標(biāo)記為“...”)。應(yīng)出現(xiàn)文件選擇對(duì)話框。選擇文件“l(fā)nkmaxq200x.xcl”1,然后單擊打開(kāi)。項(xiàng)目選項(xiàng)對(duì)話框應(yīng)如圖 5 所示。

pYYBAGQAP8KAQkURAAAuTVYFBMA316.gif


圖5.為MAXQ2000設(shè)置正確的鏈接器選項(xiàng)。

現(xiàn)在選擇 C-SPY 調(diào)試器 在類別下。在標(biāo)有“驅(qū)動(dòng)程序”的下拉框下,選擇JTAG。這告訴IAR嵌入式工作臺(tái)在實(shí)際硬件上調(diào)試應(yīng)用程序,而不是在軟件模擬器上。還要確保選擇的“設(shè)備描述文件”是“$TOOLKIT_DIR$Configmaxq200x.ddf”。圖 6 顯示了此對(duì)話框窗口的正確配置。

poYBAGQAP8OAccVpAAAposBqsO0581.gif


圖6.用于MAXQ2000的調(diào)試器選項(xiàng)

最后一個(gè)需要的項(xiàng)目選項(xiàng)在項(xiàng)目JTAG中,這是C-SPY調(diào)試器在類別列表下的子項(xiàng)目。在標(biāo)有“COM端口:”的編輯框中,輸入PC上用于與MAXQ2000評(píng)估板通信的COM端口。通常,這將是COM1或COM2,盡管許多具有USB串行端口適配器的用戶將使用COM4或更高版本。

現(xiàn)在我們已經(jīng)正確配置了IAR工具,以便與MAXQ2000評(píng)估板配合使用。單擊項(xiàng)目選項(xiàng)窗口中的確定按鈕。接下來(lái),我們需要為我們的項(xiàng)目創(chuàng)建一些源代碼。首先,我們將從一個(gè)簡(jiǎn)單的HelloWorld風(fēng)格的應(yīng)用程序開(kāi)始,它只是切換一個(gè)LED。

單擊工具欄上的“新建文件”按鈕(工具欄最左側(cè)的空白頁(yè))或從“文件”菜單中選擇“新建”。選擇源/文本,然后單擊確定按鈕。將出現(xiàn)一個(gè)標(biāo)有“無(wú)標(biāo)題1”的新窗口。在新窗口中鍵入以下代碼:

#include void main() { unsigned int counter1; unsigned int counter2; PD0 = 0xff; while (1) { for (counter1 = 0; counter1 < 0xffff; counter1++) ? ? ?{ ? ? ? ?for (counter2 = 0; counter2 < 0x10; counter2++) ? ? ? ?{ ? ? ? ?} ? ? ?} ? ? ?PO0 = PO0 ^ 0xff; ? ?} } 通過(guò)單擊“保存”按鈕(工具欄上的磁盤(pán)圖標(biāo))或從菜單中選擇“文件保存”來(lái)保存此文件。在出現(xiàn)的文件對(duì)話框中,鍵入“demo.c”作為文件名,然后單擊保存。請(qǐng)注意,文件“demo.c”不會(huì)出現(xiàn)在項(xiàng)目窗口中。在構(gòu)建項(xiàng)目之前,我們需要將此源文件添加到項(xiàng)目中。右鍵單擊項(xiàng)目窗口中的“helloproject - 調(diào)試”行,然后選擇“添加文件...”從菜單中。出現(xiàn)文件對(duì)話框時(shí),選擇文件“demo.c”,然后單擊“打開(kāi)”。現(xiàn)在源代碼已添加,我們已準(zhǔn)備好構(gòu)建。

在“項(xiàng)目”菜單下,選擇“全部重建”選項(xiàng)。屏幕底部的消息窗口應(yīng)輸出大量數(shù)據(jù),結(jié)尾為:

Total number of errors: 0 Total number of warnings: 0 如果出現(xiàn)任何錯(cuò)誤或警告,請(qǐng)確保正確輸入代碼并按照項(xiàng)目設(shè)置的所有說(shuō)明進(jìn)行操作。此時(shí)可能出現(xiàn)的一個(gè)常見(jiàn)警告是“文件的最后一行結(jié)束,沒(méi)有換行符”。如果收到此錯(cuò)誤,請(qǐng)轉(zhuǎn)到源代碼的最后一行,然后按幾次 Enter 鍵,在最后一個(gè)右括號(hào) ('}') 之后創(chuàng)建一些新行。

成功構(gòu)建項(xiàng)目后,即可運(yùn)行它。確保JTAG板和MAXQ2000板已連接并供電,如本文檔第一部分所述。此外,對(duì)于第一個(gè)演示,我們需要打開(kāi)一個(gè)開(kāi)關(guān),使 LED 段點(diǎn)亮。找到標(biāo)有 SW6 的開(kāi)關(guān),然后將 8 號(hào)開(kāi)關(guān)轉(zhuǎn)到打開(kāi)(上部)位置。若要運(yùn)行項(xiàng)目,請(qǐng)選擇“項(xiàng)目”菜單,然后選擇“調(diào)試”選項(xiàng)。應(yīng)出現(xiàn)一個(gè)窗口,告訴您正在下載應(yīng)用程序。

項(xiàng)目將從在可執(zhí)行代碼的第一行“PD0 = 0xff;”處命中其第一個(gè)斷點(diǎn)開(kāi)始。稍后我們將探討 IAR 嵌入式工作臺(tái)中可用的調(diào)試選項(xiàng)?,F(xiàn)在,只需點(diǎn)擊工具欄中的GO按鈕(三個(gè)藍(lán)色箭頭)或在“調(diào)試”菜單下選擇GO。您應(yīng)該看到大多數(shù) LED 段大約每秒閃爍一次。

我們剛剛使用IAR嵌入式工作臺(tái)編譯、加載并運(yùn)行了MAXQ2000評(píng)估板的第一個(gè)應(yīng)用。接下來(lái),我們將使我們的示例應(yīng)用程序稍微復(fù)雜一些。之后,我們將討論MAXQ2000評(píng)估板的一些特性,然后介紹IAR嵌入式工作臺(tái)中的一些調(diào)試特性。

一個(gè)簡(jiǎn)單的應(yīng)用:在LCD上顯示計(jì)數(shù)器

現(xiàn)在我們已經(jīng)成功切換了 LED,讓我們繼續(xù)討論更復(fù)雜的事情 - 使用 LCD。MAXQ2000微控制器集成了132段LCD控制器和片內(nèi)電阻分壓器,用于對(duì)比度控制。它還能夠直接向LCD屏幕供電。MAXQ2000評(píng)估板帶有一個(gè)簡(jiǎn)單的靜態(tài)LCD屏幕,該屏幕有四位數(shù)字以及一些簡(jiǎn)單的標(biāo)點(diǎn)符號(hào)(幾個(gè)冒號(hào)和句點(diǎn),見(jiàn)圖7)。首先,我們將編寫(xiě)一個(gè)僅在LCD上實(shí)現(xiàn)計(jì)數(shù)器的應(yīng)用程序。稍后,我們將詳細(xì)討論控制LCD的代碼,并顯示一個(gè)更復(fù)雜的示例。

使用前面描述的步驟創(chuàng)建新的工作區(qū)和項(xiàng)目(請(qǐng)記住,您需要為此新項(xiàng)目重新輸入所有 XLINK、C-SPY 和 JTAG 選項(xiàng))。我們將此工作區(qū)稱為 LCDDemo,并將項(xiàng)目稱為 SimpleLCD。下載此示例的源代碼。將文件 lcdcounter.c 放入您剛剛創(chuàng)建 LCDDemo 項(xiàng)目的同一目錄中。在IAR項(xiàng)目窗口中,右鍵單擊顯示“SimpleLCD - 調(diào)試”的行,然后選擇“添加文件...”。選擇我們剛剛添加的文件 lcdcounter.c,然后單擊打開(kāi)。

在運(yùn)行項(xiàng)目之前,讓我們看一下代碼的幾個(gè)重要部分。首先,一直向下滾動(dòng)到文件底部,到讀取 void main() 的行。這是應(yīng)用程序的主要入口點(diǎn)。您可以看到我們初始化 LCD(函數(shù) initLCD),然后在 (1) 時(shí)進(jìn)入無(wú)限循環(huán)。主循環(huán)調(diào)用一個(gè)函數(shù) show,該函數(shù)在 LCD 屏幕上顯示一個(gè)數(shù)字。每次通過(guò)循環(huán)時(shí),我們將值計(jì)數(shù)遞增 1,如果超過(guò) 19999,則滾動(dòng),即我們的 LCD 屏幕可以顯示的最大值。

讓我們繼續(xù)運(yùn)行應(yīng)用程序。單擊“調(diào)試”按鈕(工具欄最右側(cè))或從菜單中選擇“項(xiàng)目調(diào)試”。請(qǐng)注意,IAR 嵌入式工作臺(tái)會(huì)在將應(yīng)用加載到評(píng)估套件之前自動(dòng)構(gòu)建應(yīng)用。我們?cè)俅慰吹?IAR 顯示更改為調(diào)試模式,并且在 void main() 中的第一行代碼處停止執(zhí)行。按下GO按鈕(三個(gè)藍(lán)色箭頭)并查看顯示屏。它應(yīng)該迅速向上計(jì)數(shù)。如果你觀察的時(shí)間足夠長(zhǎng),當(dāng)它接近20000時(shí),它會(huì)環(huán)繞。

現(xiàn)在是時(shí)候展示MAXQ2000評(píng)估板中更有用的功能之一——RESET按鈕。評(píng)估板左下方是一個(gè)標(biāo)有SW2和RESET的開(kāi)關(guān)。按下按鈕并觀看液晶屏。它應(yīng)該立即再次從 0 重新開(kāi)始。此按鈕連接到微控制器的復(fù)位引腳 - 如果您需要重新啟動(dòng)應(yīng)用程序,只需按此按鈕即可。

MAXQ2000評(píng)估板的特點(diǎn)

現(xiàn)在我們已經(jīng)使用MAXQ2000評(píng)估板的LCD子板構(gòu)建了一個(gè)應(yīng)用,讓我們仔細(xì)看看評(píng)估板附帶的所有玩具。這里不介紹評(píng)估板的所有元件,但您可以在MAXQ2000評(píng)估板原理圖和“MAXQ2000評(píng)估板入門(mén)指南”中找到更多信息,兩者都在評(píng)估板隨附的CD上提供。

液晶子板

我們已經(jīng)看到了LCD板的運(yùn)行情況。段和公共信號(hào)的產(chǎn)生由MAXQ微控制器上的幾個(gè)寄存器控制。LCD子板已接線,因此可以輕松地將數(shù)字寫(xiě)入LCD屏幕上四個(gè)位置中的任何一個(gè)。由于每個(gè) 7 段 LCD 數(shù)字的映射相同,因此我們?cè)诖a中包含下表,以幫助我們編寫(xiě)正確的 LCD 寄存器值:

#define LCD_PATTERN_0 0x03F #define LCD_PATTERN_1 0x006 #define LCD_PATTERN_2 0x05B #define LCD_PATTERN_3 0x04F #define LCD_PATTERN_4 0x066 #define LCD_PATTERN_5 0x06D #define LCD_PATTERN_6 0x07D #define LCD_PATTERN_7 0x007 #define LCD_PATTERN_8 0x07F #define LCD_PATTERN_9 0x067 int 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 digit) { return PATTERNS[digit]; } 使用 getLCDDigit 函數(shù),我們可以使用以下代碼將值寫(xiě)入控制器屏幕: 該 LCD 板還可以顯示周期和冒號(hào),使其成為時(shí)鐘、溫度讀數(shù)和任何其他簡(jiǎn)單數(shù)字顯示的理想選擇。圖7顯示了LCD子板上段的完整圖,以及用于啟用每個(gè)段的LCD寄存器位。/* write the value 612 to the LCD screen */ LCD2 = getLCDDigit(6); LCD1 = getLCDDigit(1); LCD0 = getLCDDigit(2);

pYYBAGQAP8SAULrsAAA8uw5HVxY816.jpg


圖7.將LCD段映射到MAXQ2000寄存器位。

按鈕

MAXQ2000評(píng)估板上有三個(gè)按鈕,兩個(gè)可以連接到外部中斷,一個(gè)可以連接到微控制器上的復(fù)位信號(hào)。重置按鈕可用于重新啟動(dòng)應(yīng)用程序的執(zhí)行,如前面使用 LCD 計(jì)數(shù)器演示的那樣。

如果由開(kāi)關(guān)啟用,其他兩個(gè)按鈕可以連接到外部中斷。每個(gè)按鈕都有一對(duì)可以連接的外部中斷。按鈕 1(在評(píng)估板上標(biāo)有 SW4)可連接到端口 5 引腳 2(外部中斷 #10)或端口 5 引腳 3(外部中斷 #11)。按鈕 2(在評(píng)估板上標(biāo)有 SW5)可連接到端口 7 引腳 0(外部中斷 #14)或端口 7 引腳 1(外部中斷 #15)。下表描述了可用于將按鈕連接到外部中斷引腳的開(kāi)關(guān)。

開(kāi)關(guān)(設(shè)置為開(kāi)) 連接按鈕 到端口引腳... 外部中斷#
SW6,開(kāi)關(guān) 2 按鈕 1 (SW4) 端口 5 引腳 2 10
SW6,開(kāi)關(guān) 3 按鈕 1 (SW4) 端口 5 引腳 3 11
SW6,開(kāi)關(guān) 4 按鈕 2 (SW5) 端口 7 引腳 0 14
SW6,開(kāi)關(guān) 5 按鈕 2 (SW5) 端口 7 引腳 1 15

請(qǐng)注意,這些引腳具有替代功能,這就是為什么我們可以選擇可以連接到按鈕的外部中斷的原因。例如,端口 7 引腳 0 和 1 用于 UART 0 的串行端口發(fā)送和接收線路。如果將按鈕綁定到其中一個(gè)按鈕上,您將很難使用 UART 0 功能。請(qǐng)記住,MAXQ2000上有兩個(gè)UART,因此在決定如何配置MAXQ2000評(píng)估板時(shí),有一些選擇。

串行連接器

MAXQ2000評(píng)估板包含一個(gè)9引腳串行連接器和一個(gè)RS-232電平轉(zhuǎn)換器。這意味著您可以使用普通的直通串行電纜,將其從評(píng)估套件連接到PC。這與用于連接到較小的串行轉(zhuǎn)JTAG板的串行電纜相同。

為了通過(guò)此串行端口讀取傳入數(shù)據(jù),SW3上的1號(hào)交換機(jī)必須處于ON位置。請(qǐng)注意,如果使用引腳 P7.1 生成外部中斷(如果 SW6.5 為 ON),這可能會(huì)產(chǎn)生沖突。要通過(guò)此串行端口寫(xiě)入數(shù)據(jù),SW7 上的第 1 號(hào)交換機(jī)必須處于 ON 位置。同樣,如果使用 P7.0 生成外部中斷(如果 SW6.4 為 ON),這可能會(huì)產(chǎn)生沖突。

發(fā)光二極管面板

我們已經(jīng)在簡(jiǎn)單的HelloWorld風(fēng)格的應(yīng)用程序中使用了我們的LED面板。讓我們仔細(xì)看看我們?cè)谠撁姘迳峡吹降拇_切內(nèi)容。圖 8 顯示了 LED 面板及其輸出引腳關(guān)聯(lián)的各個(gè)燈。

poYBAGQAP8WAZyTAAAA_SovDBC4707.jpg


圖8.將LED映射到MAXQ2000寄存器位。

為了將值寫(xiě)入 I/O 端口,我們首先需要設(shè)置要輸出的端口 0 引腳的方向。每個(gè)引腳都有一個(gè)獨(dú)立的輸入/輸出方向控制。在我們的第一個(gè)應(yīng)用程序中,我們使用以下代碼行來(lái)設(shè)置要輸出的所有端口 0 引腳:

PD0 = 0xff; 當(dāng)相應(yīng)的I/O端口設(shè)置為輸出時(shí),當(dāng)PO0寄存器中的相應(yīng)位設(shè)置為1時(shí),該引腳的LED將亮起。請(qǐng)注意,開(kāi)關(guān)組 SW8 上的第 6 號(hào)開(kāi)關(guān)必須處于 ON 位置才能為 LED 陣列供電。

MAX1407

MAXQ2000評(píng)估板帶有MAX1407,具有4通道16位模數(shù)轉(zhuǎn)換器和兩個(gè)10位數(shù)模轉(zhuǎn)換器。MAXQ2000通過(guò)片內(nèi)SPI?主機(jī)與其通信。這使得MAX1407成為MAXQ2000與實(shí)際信號(hào)接口的完美伴侶器件。在線應(yīng)用2示例使用熱敏電阻和MAXQ2000評(píng)估板顯示當(dāng)前溫度。查看此示例應(yīng)用程序中的源代碼,了解有關(guān)運(yùn)行該應(yīng)用程序所需執(zhí)行的硬件連接和配置的信息。

使用 IAR 編譯器調(diào)試應(yīng)用程序

現(xiàn)在讓我們進(jìn)入一個(gè)新的應(yīng)用程序,它將向我們介紹IAR調(diào)試工具。像我們之前所做的那樣創(chuàng)建一個(gè)新的工作區(qū)和項(xiàng)目。我們將我們的工作空間稱為“l(fā)cdtime”,將我們的項(xiàng)目稱為“rtc_demo”。現(xiàn)在,從本應(yīng)用筆記3的源下載中添加源文件lcd_rtc.c。構(gòu)建此應(yīng)用,點(diǎn)擊DEBUG按鈕將其加載到MAXQ2000評(píng)估板上。

此應(yīng)用程序?qū)嶋H上是我們之前編寫(xiě)的LCD計(jì)數(shù)器應(yīng)用程序的擴(kuò)展。當(dāng)您開(kāi)始運(yùn)行它時(shí),它看起來(lái)是一樣的 - 在LCD屏幕上顯示快速遞增的計(jì)數(shù)。但是,按下SW4按鈕,應(yīng)用程序?qū)@示實(shí)時(shí)時(shí)鐘的當(dāng)前值。乍一看,這似乎不太有用,因?yàn)闀r(shí)間幾乎肯定是不正確的。按幾次SW5按鈕,您將看到分鐘增量。如果您還需要增加小時(shí)數(shù),您可能很快就會(huì)厭倦按下此按鈕。在這種情況下,您可以按住 SW5 按鈕并按 SW4 按鈕以增加小時(shí)數(shù)。如果再次自行按下 SW4 按鈕,您將切換回計(jì)數(shù)器顯示。

繼續(xù)并通過(guò)點(diǎn)擊GO按鈕(三個(gè)藍(lán)色箭頭)運(yùn)行此應(yīng)用程序。稍微嘗試一下,以了解應(yīng)用程序的功能。一旦您掌握了該應(yīng)用程序,我們將使用它來(lái)介紹IAR的一些調(diào)試工具。

使用 IAR 進(jìn)行調(diào)試:暫停應(yīng)用程序

在應(yīng)用程序運(yùn)行時(shí),用工具欄左側(cè)的紅手按下按鈕。您也可以轉(zhuǎn)到“調(diào)試”菜單并選擇“中斷”。這將導(dǎo)致處理器停止,IAR 將在應(yīng)用程序中顯示您的當(dāng)前位置。

應(yīng)用程序暫停后,您有多種選擇。如果將鼠標(biāo)懸停在調(diào)試工具欄上的其他一些按鈕(帶有藍(lán)色箭頭的其他按鈕)上,您將看到彈出一個(gè)提示窗口,并告訴您按鈕的功能。一些更有用的按鈕是:

單步跳過(guò):?jiǎn)尾綀?zhí)行下一條指令。如果下一條指令是函數(shù)調(diào)用,則按此按鈕不會(huì)將您帶入函數(shù)進(jìn)行調(diào)試。

步入:步入下一條指令。如果下一條指令是函數(shù)調(diào)用,則按此按鈕將帶您進(jìn)入被調(diào)用的函數(shù)。

運(yùn)行到光標(biāo):運(yùn)行應(yīng)用程序,直到執(zhí)行到達(dá)光標(biāo)在代碼中的當(dāng)前位置。這可能比使用斷點(diǎn)功能運(yùn)行到代碼中的特定點(diǎn)更方便一些。

Go:允許應(yīng)用程序正常執(zhí)行??梢酝ㄟ^(guò)按暫停按鈕或到達(dá)斷點(diǎn)來(lái)停止應(yīng)用程序。

使用 IAR 進(jìn)行調(diào)試:斷點(diǎn)

斷點(diǎn)允許我們?cè)趹?yīng)用程序到達(dá)特定位置時(shí)停止應(yīng)用程序。讓我們用一個(gè)例子來(lái)說(shuō)明這一點(diǎn)。如果應(yīng)用程序仍在運(yùn)行,請(qǐng)將其停止。在代碼中找到函數(shù) pushButtonInterrupt,并找到以下行:

IF (EIF1 & 0x04) 右鍵單擊此行,然后從彈出菜單中選擇選項(xiàng)切換斷點(diǎn)(而不是選項(xiàng)“切換書(shū)簽”!紅色的“X”應(yīng)出現(xiàn)在此行左側(cè)的邊距中。現(xiàn)在再次點(diǎn)擊調(diào)試按鈕并通過(guò)按 GO 按鈕運(yùn)行應(yīng)用程序。您應(yīng)該看到液晶屏計(jì)數(shù)器正在執(zhí)行。

按 SW5 按鈕。您會(huì)注意到計(jì)數(shù)器應(yīng)用程序似乎凍結(jié)了。如果您回顧一下 IAR 嵌入式工作臺(tái),您會(huì)發(fā)現(xiàn)應(yīng)用程序已停止,并且我們向其添加斷點(diǎn)的行已突出顯示,如圖 9 所示。

pYYBAGQAP8aAcFFZAAA2OKHqDZI367.gif


圖9.在 IAR 嵌入式工作臺(tái)中遇到斷點(diǎn)。

斷點(diǎn)是調(diào)試應(yīng)用程序時(shí)非常有用的工具。開(kāi)發(fā)人員通常想知道代碼路徑是否已被遵循或丟失。例如,如果我們的按鈕中斷例程不起作用,我們可能不得不考慮兩種選擇:1)按鈕中斷例程代碼編碼不正確,因此我們看不到預(yù)期的內(nèi)容,以及2)按鈕中斷代碼根本沒(méi)有執(zhí)行。使用斷點(diǎn),我們可以確定數(shù)字 2 是否是這種情況,這將有助于我們確定將調(diào)試工作集中在何處。

使用 IAR 進(jìn)行調(diào)試:局部變量

在應(yīng)用程序仍處于斷點(diǎn)處的情況下,打開(kāi) LOCALS 窗口(如果尚未打開(kāi))。您可以通過(guò)選擇“查看”菜單下的“局部變量”選項(xiàng)來(lái)打開(kāi)此窗口。如果您仍然暫停在我們之前設(shè)置斷點(diǎn)的行上,則局部變量窗口應(yīng)如下所示:

pYYBAGQAQX6AUtK_AAA6WQPIrQ8998.png


圖 10.IAR 嵌入式工作臺(tái)中的局部變量窗口。

請(qǐng)注意兩個(gè)條目 temp 和 time。temp 變量用于顯示 PI7 寄存器的值。請(qǐng)注意,另一個(gè)入場(chǎng)時(shí)間顯示<不可用>。這意味著該變量當(dāng)前不在作用域中 - 它要么沒(méi)有值,要么函數(shù)不會(huì)再次使用其值。

“LOCALS”窗口顯示在應(yīng)用程序已暫停的函數(shù)中聲明和使用的變量。這是一個(gè)強(qiáng)大的工具,用于告訴我們應(yīng)用程序的當(dāng)前狀態(tài) - 我們可以檢查變量中的意外值,或者根據(jù)變量的值確定應(yīng)用程序下一步將轉(zhuǎn)到何處。

但這并不是 LOCALS 窗口所能做的全部 - 您可以在程序執(zhí)行期間更改變量的值。單擊 temp 的值(可能是 1),然后輸入一個(gè)新的整數(shù)值。您剛剛更改了正在執(zhí)行的應(yīng)用程序的狀態(tài)。這允許開(kāi)發(fā)人員查看他們的應(yīng)用程序如何對(duì)不同的輸入做出反應(yīng),而無(wú)需重新構(gòu)建和重新加載應(yīng)用程序。

使用 IAR 進(jìn)行調(diào)試:監(jiān)視窗口

在應(yīng)用程序仍處于暫停狀態(tài)的情況下,打開(kāi)“監(jiān)視”窗口(“查看監(jiān)視”)。在表達(dá)式下,輸入 pbcount。值 1 應(yīng)出現(xiàn)在 WATCH 窗口中(除非您按下了更多按鈕并讓?xiě)?yīng)用程序再次運(yùn)行)。監(jiān)視窗口允許我們輸入所需的任何表達(dá)式,并向我們顯示該表達(dá)式的計(jì)算值。在本例中,我們輸入了一個(gè)全局變量的名稱,該變量告訴我們輸入了多少次按鈕中斷代碼。監(jiān)視窗口比這更強(qiáng)大一些,但是在監(jiān)視窗口中再次單擊pbcount,然后鍵入pbcount ^0x05。IAR 嵌入式工作臺(tái)將評(píng)估此表達(dá)式(以 5 表示 pbcount 值的獨(dú)占 OR),并顯示結(jié)果 (4)。

poYBAGQAP8iAItZEAAAT1HoKk-I001.gif


圖 11.IAR 嵌入式工作臺(tái)中表達(dá)式的監(jiān)視窗口。

使用 IAR 進(jìn)行調(diào)試:調(diào)用堆棧

打開(kāi)調(diào)用堆棧(查看調(diào)用堆棧)。調(diào)用堆棧顯示已調(diào)用的函數(shù),以到達(dá)代碼當(dāng)前正在執(zhí)行的位置?,F(xiàn)在,由于我們正在處理中斷,因此僅顯示 pushButtonInterrupt() (以及一些調(diào)試信息)。讓我們稍微逐步瀏覽一下應(yīng)用程序,看看這個(gè)窗口的運(yùn)行情況。我們將向下轉(zhuǎn)到標(biāo)記為中斷 15 的代碼段下的 showTime() 行。您可以多次按單步跳過(guò),也可以右鍵單擊該行并選擇運(yùn)行到光標(biāo)。您現(xiàn)在應(yīng)該突出顯示 showTime() 行。按下 STEP INTO 按鈕,我們應(yīng)該看到 showTime() 函數(shù)中的第一行代碼突出顯示。再次查看調(diào)用堆棧 - 現(xiàn)在 showTime() 函數(shù)是列出的第一行,后跟 pushButtonInterrupt()。由于它是一個(gè)堆棧,因此首先列出我們當(dāng)前所在的函數(shù),然后是調(diào)用我們的函數(shù),然后是調(diào)用該函數(shù)的函數(shù),依此類推。

poYBAGQAQY2AHNunAAAm2PSPZSs825.png


圖 12.IAR 嵌入式工作臺(tái)中的調(diào)用堆棧。

使用 IAR 進(jìn)行調(diào)試:內(nèi)存窗口

IAR 嵌入式工作臺(tái)還允許我們查看運(yùn)行應(yīng)用程序的設(shè)備的內(nèi)存。選擇查看內(nèi)存以查看內(nèi)存窗口。第一次打開(kāi)此窗口時(shí),它可能顯示代碼段的內(nèi)存內(nèi)容。單擊下拉框,您可以看到我們可以查看的內(nèi)存類型的選項(xiàng)。選擇“數(shù)據(jù)”選項(xiàng),查看MAXQ2000片內(nèi)RAM的內(nèi)容。

poYBAGQAP8qADzoMAAAyi3q6AcM044.gif


圖 13.內(nèi)存內(nèi)容顯示在 IAR 嵌入式工作臺(tái)中。

就像 LOCALS 窗口一樣,我們可以直接在此處更改 RAM 的值。突出顯示其中一個(gè)條目,然后鍵入要查看的新十六進(jìn)制值。與 LOCALS 窗口一樣,對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),這是一個(gè)有用的工具,無(wú)需重新生成和重新加載應(yīng)用程序即可更改其應(yīng)用程序的狀態(tài)。

使用 IAR 進(jìn)行調(diào)試:寄存器窗口

與內(nèi)存窗口類似的是寄存器窗口(查看寄存器)。該窗口顯示MAXQ2000的寄存器映射。首先出現(xiàn)的寄存器是MAXQ平臺(tái)的核心寄存器,如累加器、數(shù)據(jù)指針和環(huán)路計(jì)數(shù)器。單擊下拉框,您可以看到其他幾個(gè)選項(xiàng)。例如,選擇端口 I/O 寄存器?,F(xiàn)在可以查看和編輯與MAXQ2000上輸入/輸出端口相關(guān)的所有寄存器。

pYYBAGQAP8uAPgbTAAAaUbHbiPo951.gif


圖 14.寄存器內(nèi)容顯示在 IAR 嵌入式工作臺(tái)中。

故障 排除

與開(kāi)始使用任何新設(shè)備一樣,人們?cè)诘谝淮螄L試通信時(shí)通常會(huì)遇到一些問(wèn)題。通過(guò)驗(yàn)證是否遵循了本文檔第一部分中的所有說(shuō)明(例如電路板連接和項(xiàng)目配置),可以解決許多問(wèn)題。以下是一些更常見(jiàn)的問(wèn)題和解決方案:

問(wèn)題 可能的解決方案
當(dāng)我點(diǎn)擊調(diào)試時(shí),IAR根本沒(méi)有抱怨,但我的MAXQ2000硬件什么也沒(méi)做。 確保在C-SPY調(diào)試器項(xiàng)目選項(xiàng)下選擇了JTAG驅(qū)動(dòng)程序。
我收到一個(gè)錯(cuò)誤,抱怨一個(gè)損壞的 *.d66 文件。 確保在 XLINK
poYBAGQAP8yAKXHvAAAAsUeLxSE186.gif
包含選項(xiàng)下,您已選擇使用 lnkmaxq200x.xcl 文件覆蓋默認(rèn)的 XCL 文件。
我已經(jīng)正確配置了所有內(nèi)容,但是當(dāng)我按下調(diào)試按鈕時(shí)無(wú)法加載應(yīng)用程序。 確保沒(méi)有其他軟件正在使用您選擇的COM端口。通常,PDA軟件將從您啟動(dòng)計(jì)算機(jī)時(shí)開(kāi)始擁有串行端口。您可以選擇其他COM端口,也可以關(guān)閉PDA軟件。
IAR 嘗試開(kāi)始加載應(yīng)用程序,但它永遠(yuǎn)不會(huì)通過(guò)。我所有的電纜和配置都是正確的。 嘗試重新啟動(dòng) IAR 嵌入式工作臺(tái)。

對(duì)于將應(yīng)用程序加載到MAXQ2000上的這些和其它問(wèn)題,打開(kāi)屏幕底部消息窗口中的“工具輸出”選項(xiàng)卡可能很有用。此處列出的消息可能會(huì)為您提供有關(guān)加載失敗原因的線索。

結(jié)論

MAXQ2000是達(dá)拉斯半導(dǎo)體公司首款從MAXQ平臺(tái)推出的器件,是一款功能強(qiáng)大的低成本、低功耗微控制器,為消費(fèi)類應(yīng)用提供了大量的外設(shè)支持。在IAR嵌入式工作臺(tái)的支持下,復(fù)雜的應(yīng)用程序可以用C語(yǔ)言編寫(xiě),并在強(qiáng)大的工具的幫助下進(jìn)行調(diào)試,從而產(chǎn)生快速的上市時(shí)間和高質(zhì)量的產(chǎn)品。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7553

    瀏覽量

    151426
  • 半導(dǎo)體
    +關(guān)注

    關(guān)注

    334

    文章

    27366

    瀏覽量

    218766
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19126

    瀏覽量

    305247
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MAXQ2000微控制與MAX4397是如何連接的?

    MAX4397是什么?MAXQ2000微控制與MAX4397是如何連接的?
    發(fā)表于 06-04 06:15

    使用MAXQ2000評(píng)估的應(yīng)用實(shí)例

    摘要:本文介紹了利用MAXQ系列微控制開(kāi)發(fā)一個(gè)產(chǎn)品的具體技術(shù)。MAXQ2000評(píng)估被用來(lái)開(kāi)發(fā)一個(gè)特殊處理
    發(fā)表于 04-23 17:33 ?34次下載

    采用MAXQ2000進(jìn)行音頻濾波

    集成了乘累加單元(MAC)和單周期內(nèi)核的MAXQ2000非常適合用作通用微控制。MAXQ2000所具有的性能和I/O外設(shè)適合多種應(yīng)用:如鬧鐘、手持醫(yī)療設(shè)備、數(shù)字讀取等需要低功耗、高
    發(fā)表于 12-25 23:24 ?34次下載

    采用MAXQ2000 USB “拇指”評(píng)估套件進(jìn)行設(shè)計(jì)

    采用MAXQ2000 USB “拇指”評(píng)估套件進(jìn)行設(shè)計(jì) 本應(yīng)用筆記介紹使用USB “拇指”評(píng)估(EV)套件快速開(kāi)發(fā)MAXQ2000 RISC微控制
    發(fā)表于 01-13 08:03 ?827次閱讀
    采用<b class='flag-5'>MAXQ2000</b> USB “拇指”<b class='flag-5'>評(píng)估</b>套件進(jìn)行設(shè)計(jì)

    采用MAXQ2000 USB “拇指”評(píng)估套件進(jìn)行設(shè)計(jì)

    摘要:本應(yīng)用筆記介紹使用USB “拇指”評(píng)估(EV)套件快速開(kāi)發(fā)MAXQ2000 RISC微控制所需要的步驟。文檔解釋了怎樣安裝和配置評(píng)估套件的硬件和軟件,怎樣開(kāi)發(fā)并裝入
    發(fā)表于 04-23 15:54 ?725次閱讀
    采用<b class='flag-5'>MAXQ2000</b> USB “拇指”<b class='flag-5'>評(píng)估</b>套件進(jìn)行設(shè)計(jì)

    利用MAXQ2000設(shè)計(jì)電壓表

    摘要:本應(yīng)用筆記演示了如何配置MAXQ2000微控制實(shí)現(xiàn)簡(jiǎn)單的電壓表設(shè)計(jì)。該應(yīng)用采用MAXQ2000評(píng)估,其中包括4½位段
    發(fā)表于 04-23 16:07 ?834次閱讀
    利用<b class='flag-5'>MAXQ2000</b>設(shè)計(jì)電壓表

    Rowley CrossWorks和MAXQ2000評(píng)估

    摘要:MAXQ2000是功能強(qiáng)大的低成本、低功耗微控制,具備支持多種應(yīng)用系統(tǒng)的豐富外設(shè)。Rowley Associates提供了強(qiáng)大的MAXQ開(kāi)發(fā)環(huán)境CrossWorks,在該工具的支持下,可以用C語(yǔ)言編寫(xiě)復(fù)雜
    發(fā)表于 04-23 16:43 ?1496次閱讀
    Rowley CrossWorks和<b class='flag-5'>MAXQ2000</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>入

    IAR編譯器MAXQ2000評(píng)估使用入門(mén)

    摘要:本應(yīng)用筆記說(shuō)明如何建立、構(gòu)建和調(diào)試面向MAXQ®平臺(tái)、以C語(yǔ)言編寫(xiě)的應(yīng)用程序,并演示MAXQ2000的某些特性。 引言MAXQ平臺(tái)得到了世界一流工具的支持,
    發(fā)表于 04-23 17:22 ?1255次閱讀
    <b class='flag-5'>IAR</b><b class='flag-5'>編譯器</b>和<b class='flag-5'>MAXQ2000</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>使用<b class='flag-5'>入門(mén)</b>

    采用MAXQ2000進(jìn)行音頻濾波

    摘要:集成了乘累加單元(MAC)和單周期內(nèi)核的MAXQ2000非常適合用作通用微控制(µC) 。MAXQ2000所具有的性能和I/O外設(shè)適合多種應(yīng)用:如鬧鐘、手持醫(yī)療設(shè)備、數(shù)字讀取
    發(fā)表于 04-23 17:27 ?1076次閱讀
    采用<b class='flag-5'>MAXQ2000</b>進(jìn)行音頻濾波

    MAXQ7665評(píng)估快速入門(mén)

    摘要:本應(yīng)用筆記是快速入門(mén)。它解釋了怎樣安裝并配置IAR Embedded Workbench?。此外,它提供簡(jiǎn)要的說(shuō)明來(lái)編譯、鏈接、調(diào)試MAXQ7665微控制
    發(fā)表于 05-02 10:42 ?796次閱讀
    <b class='flag-5'>MAXQ</b>7665<b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>快速<b class='flag-5'>入門(mén)</b>

    采用MAXQ2000實(shí)現(xiàn)與MAX1169的高速I(mǎi)2C接口

    并不帶有MAXQ2000微控制;系統(tǒng)通過(guò)SCL、SDA以及GND將MAXQ2000評(píng)估和MAX1169
    發(fā)表于 04-06 15:34 ?5次下載
    采用<b class='flag-5'>MAXQ2000</b>實(shí)現(xiàn)與MAX1169的高速I(mǎi)2C接口

    使用MAXQ2000和MAX7312進(jìn)行LED打靶練習(xí)游戲

    本應(yīng)用筆記提供了將MAXQ2000微控制MAXQ20內(nèi)核)連接至MAX7312 16位端口擴(kuò)展所需的全部固件。應(yīng)用示例是一個(gè)LED目標(biāo)練習(xí)游戲。示例裝配程序是專門(mén)為
    的頭像 發(fā)表于 01-14 14:58 ?938次閱讀
    使用<b class='flag-5'>MAXQ2000</b>和MAX7312進(jìn)行LED打靶練習(xí)游戲

    使用MAXQ2000進(jìn)行音頻濾波

    乘法累加單元(MAC)和單周期內(nèi)核的組合使MAXQ2000成為多功能微控制(μC)。MAXQ2000具有性能和I/O外設(shè),非常適合許多應(yīng)用:鬧鐘、手持醫(yī)療設(shè)備、數(shù)字讀數(shù)——任何需要低功耗、高性能和大量I/O的應(yīng)用。通過(guò)集成MA
    的頭像 發(fā)表于 03-02 14:13 ?926次閱讀
    使用<b class='flag-5'>MAXQ2000</b>進(jìn)行音頻濾波

    如何將MAXQ2000用作電壓表

    本應(yīng)用筆記演示如何為簡(jiǎn)單的電壓表應(yīng)用配置MAXQ2000微控制。應(yīng)用使用MAXQ2000評(píng)估,該評(píng)估
    的頭像 發(fā)表于 03-03 14:27 ?732次閱讀
    如何將<b class='flag-5'>MAXQ2000</b>用作電壓表

    選擇MAXQ2000微控制和MAX1132 ADC接口的SPI時(shí)鐘模式

    圖1所示為MAX1132評(píng)估原理圖,圖2給出了系統(tǒng)的配置圖。為連接MAX1132評(píng)估MAXQ2000
    的頭像 發(fā)表于 06-12 16:54 ?676次閱讀
    選擇<b class='flag-5'>MAXQ2000</b>微控制<b class='flag-5'>器</b>和MAX1132 ADC接口的SPI時(shí)鐘模式