|
|
 |
 |
现在最新版的AVR Studio 的还把GCCAVR集成到系统里,用C语言开发AVR将更加轻松,而且软件都是免费的,没有版权问题。
最新版本WinAVR 20071221 下载地址: http://jaist.dl.sourceforge.net/sourceforge/winavr/WinAVR-20071221-install.exe GCC是Linux的唯一开发语言。就嵌入系统应用来说,几乎所有市面上有一定市场份额的8bit以上MCU都有爱好者移植GCC在其上。
GCC的编译器优化程度可以说是目前世界上民用软件中做的最好的,完全用ANSI?C规范写出的超过一万行代码的程序,目前还没有任何一种编译器产生的目标代码能比GCC产生的代码速度更快,但是同时它的bug数量却也可以算作所有民用C编译器中最少的
就8bit开发而言,GCC还有一个很严重的缺陷就是,不支持float数据类型,实际上GCC在所有环境中都把float直接定义为double,这样,对8bit环境来说,就显得负担过重了。
被移植到WINDOWS平台上,整合了各个组件后的Windows版GCCAVR就是WinAVR。不是IDE,自己定制IDE的时候就要用到makefile,makefile重要作用就是:指定所用的单片机类型,指定编译的文件,设定编译优化条件等。
dzk0620 朋友的使用心得: 经过对比,发现了它们的不同之处,同时也是我写程序时的注意之处,虽然我下面写的一些东西现在按原来的方式还可以编译通过,但是会出现警告,细细读读,就会发现WINAVR放弃了原来一些自己独特的东西,越来越接近于标准的GCC和ARM-GCC了。以下是我的一些总结,请大家补充,如果你有新的发现请发MAIL告诉我:DZK0620@126.COM,先谢谢了!!! WINAVR20050214 与WINAVR20060125的不同之处: 一.头文件 1.原来的delay.h 移到了until/delay.中,include中应做相应变化。 2.原来的signal.h被删掉了,现在应使用。 二.中断程序 1.将中断函数定义为的ISR(),中断应写为ISR(vector); 2.在原来中断函数中的SIGNAL(SIG_INTERRUPT0) {//user code}将被ISR(INT0_vect){//user code}所取代。 3.常用中断定义的新名称。 INT0_vect //外部中断1 INT1_vect //外部中断2 SPI_STC_vect //SPI Transfer Complete TIM0_COMPA_vect //Timer/Counter Compare Match A TIM0_COMPB_vect //Timer/Counter Copmare MatchB TIM0_OVF_vect //Timer/Counter0 Overflow TIM1_OVF_vect //Timer/Counter1 Overflow TIMER1_CAPT_vect // Timer/Counter Capture Event USART_RXC_vect // USART Rx Complete 等等,详细请参照你所选CPU相应头文件中的定义。 4.没有使用的中断可以定义为EMPTY_INTERRUPT(vector)以提高效率。
|
|