加载中...
从WinAVR到IAR快速移植
发表于:2009-07-13 | 分类: 硬件设计
字数统计: 401 | 阅读时长: 1分钟 | 阅读量:

从GCC到IAR快速移植 1.增加文件 2.头文件处理 //#include<avr/io.h> #include <iom16.h> //#include<avr/eeprom.h> //#include<avr/interrupt.h> //#include<avr/wdt.h>   3.中断方式的变化 GCC中 ISR() IAR中: #pragma vector=TIMER2_OVF_vect   __interrupt void timer0isr(void) {        } 4.启用一些编译开关 #define ENABLE_BIT_DEFINITIONS 5.库函数快速适应 在GCC中存在相应库函数 void eeprom_read_block(uchar *data,uint addr,unsigned char length) void eeprom_write_block(unsigned char *data,uint addr,unsigned char length) 到了IAR可以自己编写一个,还用这样的名称: void eeWriteByte(unsigned int uiAddress, char ucData)   {   // 等待上一次写操作结束   while(EECR & (1<<EEWE));   // 设置地址和数据寄存器   EEAR = uiAddress;   EEDR = ucData;   //置位EEMWE   EECR = (1<<EEMWE);   // 置位EEWE 以启动写操作   EECR = (1<<EEWE);   } unsigned char eeReadByte(unsigned int uiAddress)  {  //等待上一次写操作结束  while(EECR & (1<<EEWE));  //设置地址寄存器  EEAR = uiAddress;  // 设置EERE 以启动读操作  EECR = (1<<EERE);  //自数据寄存器返回数据  return EEDR;  }   void eeprom_write_block(unsigned char *data,uint addr,unsigned char length)   {   for(;length>0;length–)    {   eeWriteByte(addr,*data);                   addr++;data++;   }     }     void eeprom_read_block(uchar *data,uint addr,unsigned char length)   {   for(;length>0;length–)    {    *data=eeReadByte(addr);                 addr++;data++;   }   }   6.一些语法的适应   IAR中 volitale还和一般的不兼容 不支持二进制0B…形式,可换成0x…形式 还不能之间从常数表格中写,还得读到RAM中 更换memory type,比如由tiny换成small模式 Error[Pe095]: array is too large E….h 78  等等

上一篇:
学习模式
下一篇:
音频
本文目录
本文目录