CCS和IAR软件对相同的代码产生txt文件不同

2019-07-15 16:07发布

本帖最后由 Rsgofov 于 2016-7-22 19:42 编辑

RT,使用BSL烧写程序,相同的程序,在IAR上编译生成的TXT文件和在CCS上编译产生的CCS的TXT文件不同,最终烧到板子上效果也不同。这是为什么呢,有什么解决措施么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
Rsgofov
2019-07-15 16:58
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在头文件中没有定义,所以是错的。即使编译器没有报错。

(我的初步理解)

一周热门 更多>