| 
 
| 使用BSL烧写程序,相同的程序,在IAR上编译生成的TXT文件和在CCS上编译产生的CCS的TXT文件不同,最终烧到板子上效果也不同。这是为什么呢,有什么解决措施么? 
 CCS和IAR都是TI本家的软件,都可生成TXT文件通过BSL方式进行烧写。但是两着编译器器不同,优化和实现不一样,所以生成的TXT文件会有差异。这是正常的。但是相同的代码,IAR编译出来能用,CCS不能,着一定是代码的问题。
 比如:
 //*************************************************************************
 //    ADC中断服务程序
 //*************************************************************************
 #pragma vector=ADC12_VECTOR
 __interrupt void ADC12_ISR(void)
 {
 uchar j;
 while((ADC12CTL0&0x01)==1);           //如果ADC忙,则等待,否则读取ADC转换数值
 Flag = 1 ;
 TEMP = ADC12MEM0;                     //读取ADC转换值
 Data_do(TEMP);                        //处理ADC值,用于显示
 for(j=0;j<50;j++)
 {
 Display(A1,A2,A3,A4);               //显示ADC的数据
 }
 }
 这段代码是正确的。因为它是修改过的
 但是修改前
 #pragma vector=ADC_VECTOR
 是这一句。
 编译时CCS给出了警告。
 
 我们来看 MSP430 的中断子函数模板,加粗斜体部分是允许用户“创意” 的地方,其他
 则是固定格式。其中, PORT1_VECTOR 是中断向量表中的地址宏定义,直接决定了这个中
 断子函数是响应哪个中断源。 PORT1_ISR 是中断子函数名,这个最好按标准写法取名字,便
 于理解。中断向量表和标准的中断子函数名可见头文件<MSP430G2553.h>。
 __interrupt void ADC12_ISR(void)
 只有黑体部分可以有创意。
 ADC在头文件中没有定义,所以是错的。即使编译器没有报错。
 | 
 |