新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > IAR編譯器的常見問題

IAR編譯器的常見問題

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

5.內(nèi)聯(lián)函數(shù)

inline函數(shù)傳統(tǒng)上只有C++支持,但IAR EW也支持在C代碼中使用inline.
#pragma inline:建議編譯器對緊隨其后的函數(shù)進行inline處理
#pragma inline = forced:強制編譯器對緊隨其后的函數(shù)進行inline處理

/***************************** 錯誤描述 ******************************************/// tft.c中定義內(nèi)聯(lián)函數(shù)#pragma inline = forced          //強制inlinevoid TFT_Write_Colour(const RGB_COLOUR *rgb){ //...code....}// tft.h中聲明函數(shù)void TFT_Write_Colour(const RGB_COLOUR *rgb);// main.c中調(diào)用函數(shù)// 編譯報錯:main中引用了未定義的外部函數(shù)TFT_Write_Colour。/***************************** 解決辦法 ******************************************/// tft.h中“定義函數(shù)”#pragma inline = forced          //在IAR EW430中,這里必須用強制inline;用inline可能導(dǎo)致編譯器忽略內(nèi)聯(lián),而定義成普通函數(shù)而出錯。void TFT_Write_Colour(const RGB_COLOUR *rgb){ //...code....}// main.c中包含tft.h,并調(diào)用函數(shù)// 結(jié)果:編譯正確

6. 如何把變量定義到flash空間

unsignedchar__flash temptab[] = {1,2,3,4,5};
__flash unsignedchara @ 0x8;// 定義變量存放在flash 空間0X08單元

7. 關(guān)于內(nèi)存模型

AVR微控制器的其中一個特點是它有一種存儲器訪問方法均衡了“cheap access limited to small memory areas”與“more expensive accessmethods that can access any location in memory”。
在AVR_IAR C/C++編譯器中,通過選擇某種存儲模式(memorymodel),可設(shè)置一些訪問方法為默認的存儲器訪問方法(default memory accessmethod)。共有三種可用的存儲模式——Tiny,Small 和Large。你的處理器選項決定了哪些模式可以使用。如果你不指定一種存儲模式,則編譯器自動設(shè)定-v0、-v1、-v2、-v3、-v5 選項下的默認方法為Tiny,-v4 和-v6 選項下的訪問方法為Small?! ?p>

8.關(guān)于生成文件格式的設(shè)置

如圖,在linker -> outpu ->other中可設(shè)置相應(yīng)的輸出文件格式.

比如要生成bin格式,選擇raw-binary就可以了, 如果是要生成hex格式,那么可以選intel-extern ,不過這個時候文件擴展名是*.a90,可以把"Override default " 打鉤,然后修改后綴名為hex就行了.

------------------------------------------------------------------------------------------------------------------


上一頁 1 2 3 下一頁

關(guān)鍵詞: IAR編譯

評論


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

關(guān)閉