如何输出HEX文件 如何输出HEX文件? 方法一 最好用)在配置文件后面加入以下代码,便可输出HEX文件,A90文件与HEX文件一样,SLISP都能识别. 如图Override default 目录下的那个文件中最后面加入以下代码 // Output File -Ointel-extended,(XDATA)=.eep //产生eeprom文件 -Ointel-extended,(CODE)=.A90 //产生烧写文件 -Ointel-extended,(CODE)=.hex //产生烧写文件 或者 不在配置文件后面加,直接在如下图的地方加入命令 方法二) Output 选择zax-i 这个方法会出现一点小问题,如果有__eeprom 则会出下面的错误提示,__flash 没事。 Error[e133]: The output format intel-standard cannot handle multiple address spaces. Use format variants (-y -O) to specify which address space is wanted (.hex 和.eep不能同时放到一个文件中,如果没有.eep文件生成就不会报错,可以正常使用了) 中断向量的使用 IAR中定义中断函数的格式是 ///////////////////////////////// #pragma vector=中断向量 __interrupt void 中断服务程序(void) { //中断处理程序 } ///////////////////////////////////// 中断的初始化要另外加入代码,可在主程序内加入。如下是各个中断函数的定义。 //中断定义 #include
#pragma vector=INT0_vect __interrupt void INT0_Server(void) { } #pragma vector=INT1_vect __interrupt void INT1_Server(void) { } #pragma vector=TIMER2_COMP_vect __interrupt void TIMER2_COMP_Server(void) { } #pragma vector=TIMER2_OVF_vect __interrupt void TIMER2_OVF_Server(void) { } #pragma vector=TIMER1_CAPT_vect __interrupt void TIMER1_CAPT_Server(void) { } #pragma vector=TIMER1_COMPA_vect __interrupt void TIMER1_COMPA_Server(void) { } #pragma vector=TIMER1_COMPB_vect __interrupt void TIMER1_COMPB_Server(void) { } #pragma vector=TIMER1_OVF_vect __interrupt void TIMER1_OVF_Server(void) { } #pragma vector=TIMER0_OVF_vect __interrupt void TIMER0_OVF_Server(void) { } #pragma vector=SPI_STC_vect __interrupt void SPI_STC_Server(void) { } #pragma vector=USART_RXC_vect __interrupt void USART_RXC_Server(void) { } #pragma vector=USART_UDRE_vect __interrupt void USART_UDRE_Server(void) { } #pragma vector=USART_TXC_vect __interrupt void USART_TXC_Server(void) { } #pragma vector=ADC_vect __interrupt void ADC_Server(void) { } #pragma vector=EE_RDY_vect __interrupt void EE_RDY_Server(void) { } #pragma vector=ANA_COMP_vect __interrupt void ANA_COMP_Server(void) { } #pragma vector=TWI_vect __interrupt void TWI_Server(void) { } #pragma vector=INT2_vect __interrupt void INT2_Server(void) { } #pragma vector=TIMER0_COMP_vect __interrupt void TIMER0_COMP_Server(void) { } #pragma vector=SPM_RDY_vect __interrupt void SPM_RDY_Server(void) { } 如何把常数字符串定义在flash 空间? 法一:unsigned char __flash temptab[] = {1,2,3,4,5}; 法二:__flash unsigned char temptab[] = {1,2,3,4,5}; 法三:#pragma type_attribute=__flash unsigned char temptab[]={1,2,3,4,5}; 法四:const unsigned char temptab[]={1,2,3,4,5}; 注:第三种方式用#pragma
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
后,下面的定义的变量将都在FLASH空间了,用于定义一批FLASH变量,但实际上一般只能作为常量使用了. 心得1 图中CSTACK的大小调整大小可在编译后的 632 bytes of DATA memory (+ 22 absolute ) 中看到。如果定义了好几个大的数组。会导致程序不报错。但无法正常工作。