||
在使用IAR調(diào)試CC2510過程中遇到了兩個問題:
一,、總出現(xiàn)無法編譯錯誤
提示:Fatal Error[Pe005]: could not open source file "string.h"
提示有嚴重問題:無法打開string.h文件,!
用Windows搜索功能搜索到string.h文件,,并且拷到項目文件夾內(nèi),還是不行,。初步判斷IAR的編譯程序找不到string.h文件,,說明路徑是不對。按“ALT+F7”進入“Options for node”,點左邊的“C/C++ Compiler”,再點右邊的標簽“Preprocessor”如下圖:
問題就出在這里:在Include paths框內(nèi)包含文件的路徑設(shè)置不對:
$TOOLKIT_DIR$\INC\
該句話就是指定包含文件的路徑,;
其中“$TOOLKIT_DIR$ ” 的意思是:包含文件的路徑在IAR安裝路徑的8051文件夾下,,對于我的電腦IAR安裝在C盤,那么具體就表示它就表示:
$TOOLKIT_DIR$相當于:
C:\Program Files\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051
$TOOLKIT_DIR$\INC\相當于:
C:\Program Files\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051\INC\
可是在INC目錄下找不到string.h文件,,這就是問題所在,。在INC目錄下又有兩個文件夾:CLIB和DLIB,而string.h文件在CLIB文件夾內(nèi),;將Include paths框內(nèi)改為:$TOOLKIT_DIR$\INC\CLIB\,;編譯又出現(xiàn)錯誤提示:
Fatal Error[Pe005]: could not open source file "iocc2510.h"
將Include paths框內(nèi)改為:
$TOOLKIT_DIR$\INC\
$TOOLKIT_DIR$\INC\CLIB\;
編譯正常,!
另外,,$PROJ_DIR$的意思是包含文件指向工程目錄的上一級目錄中,例如:我們的工程文件為:D: \DESIGN\WIRELESS\CC2510; 那么$PROJ_DIR$就表示:D: \DESIGN\WIRELESS\,;了解這些,,我們就可靈活配置。
二,、指令總是判斷錯誤
看以下程序:
#include <ioCC2510.h>
#define uint unsigned int
#define uchar unsigned char
#define led1 P1_0 //控制紅LED
#define led2 P1_1 //控制綠LED
uint TempFlag; //用來標志是否要閃爍
/***************************
//主函數(shù)
***************************/
void main()
{
// uint TempFlag; //AA句
while(1)
{
TempFlag = 5; //A句
if(5 == TempFlag) //B句
{
led1 = !led1; //C句
TempFlag = 0;
Delay(600);
}
else
{
Led2 = !led2; //D句
Delay(600);
}
}
}
看以上程序,,盡管有A句-- TempFlag = 5,但是B句--if(5 == TempFlag) 判斷總是不成立,,C句總不執(zhí)行,;將A句--TempFlag = 5改了好多數(shù)字都沒有改觀。若將變量TempFlag定義在AA句處,,改為局部變量就正常了,;但是其他地方也要用變量TempFlag,所以這樣改不行,;查看匯編程序,,發(fā)現(xiàn)if(5 == TempFlag)語句對應的匯編指令用MOVX,也就是變量TempFlag被定義在了外部RAM,;可線路板上并未擴展外部RAM,;那么TempFlag的數(shù)據(jù)很可能是0XFF,將A句改為:TempFlag = 0xff,C句就可執(zhí)行了,�,?赡苁�IAR設(shè)置不合適:按“ALT+F7”進入“Options for node”,點左邊的“General Options”,再點右邊的標簽“Target”,如下圖:
可見:Data model欄設(shè)置不對,改為:small就正常了,。 wbymcs51.blog.bokee.net
通過以上兩例,,我們可以看出,IAR的環(huán)境設(shè)置比較重要,。在使用IAR或KEIL C時,,不能僅僅按有些簡單的說明步驟去做,一定要清楚每個設(shè)置是在做什么,,為什么要這樣做,,才會心中有數(shù)。我們覺得徐愛鈞老師的兩本書講的比較詳細:《單片機高級語言C51 Windows 環(huán)境編程與應用 》和《IAR EWARM嵌入式系統(tǒng)編程與實踐 》,,講到了編譯,、匯編和連接的相關(guān)命令。其實,,以上界面的每個設(shè)置都對應增減一條命令代碼或在某個命令中增減一個參數(shù)項,,通過界面設(shè)置和命令代碼對比,就會知其然,,更知其所以然,。
小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,,浙公網(wǎng)安備33038202004372號 )
GMT+8, 2025-4-21 16:02 , Processed in 0.031437 second(s), 15 queries , Gzip On.
Powered by Discuz! X3.4 Licensed
© 2001-2017 Comsenz Inc.