發(fā)表時(shí)間:2023-07-22 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
WinAVR是一款的AVR單片機(jī)編譯軟件,WinAVR的目標(biāo)代碼效率極高。具有編譯速度快、編譯準(zhǔn)確性高的特點(diǎn),支持多種數(shù)據(jù)類型。代碼可讀性和可移植性高。winavr還有一個(gè)很嚴(yán)重的缺陷就是不支持float數(shù)據(jù)類型,原因是GCC在所有環(huán)境中都把float直接定義為double。這樣,對(duì)8bit環(huán)境來說,就顯得負(fù)擔(dān)過重了。
1、AVRGCC不能像CVAVR或ICCAVR那樣把特殊I/O口當(dāng)變量來用,怎么辦?
其實(shí),使用 AVRGCC 的 inp(port) 和 outp(data,port) 宏就是最好的方法,但如果真的需要延續(xù)以往的使用方式,也可以照以下方式辦理:#define dPORTA (*(unsigned char *)(PORTA + 0x20))。如此,就定義了一個(gè) dPORTA 的偽變量,可以直接用于表達(dá)式中,并且用此種方式也可以實(shí)現(xiàn)類似 C51 中的 sfr 變量類型……
2、AVRGCC 不能編譯帶浮點(diǎn)函數(shù)的程序,怎么辦?
很簡(jiǎn)單,在工程所在目錄的makefile文件中,把LDFLAGS=項(xiàng)目最后加上 .-lm就可以了……
3、怎么改變目標(biāo)程序的優(yōu)化方式?
在makefile文件的CPFLAGS=行中,加入-Ox(x=1,2,3,s)就可以了,如果已經(jīng)有了-O的項(xiàng)目,就改變現(xiàn)有的,1~3 代表優(yōu)化方式,s代表按代碼長(zhǎng)度優(yōu)化……
4、AVRGCC 能不能為 AT90S1200、ATTiny 系列進(jìn)行 C 語言編程?
答案是肯定的!首先,需要在 makefile 的項(xiàng)目中,把MCU=后面的內(nèi)容改成avr2其次,需要在程序所在的 c 文件中,把#include 改成#include ,#include如此,即可以直接將編譯后的代碼用于該兩類MCU上,不過,還需要注意的是,由于該兩類 MCU 沒有軟件堆棧和 RAM,所以,程序中*禁止*使用全局變量、局部靜態(tài)變量以及中斷處理以外的函數(shù)(其實(shí)在 GCC 中,中斷處理程序叫做“信號(hào)”,不叫函數(shù)),并且,在中斷處理過程中,最好不要開放中斷,否則會(huì)引起數(shù)據(jù)錯(cuò)誤并非不可以,但需要一些技巧)。
騰訊視頻官方版 | 45.34MB
愛奇藝視頻官方正式版 | 35.10MB
暴風(fēng)影音最新版下載 | 50.3MB
QQ音樂官方正式版 | 24.2MB
酷狗音樂2022下載 | 37MB