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