打印

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

[复制链接]
1081|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Thor9|  楼主 | 2016-7-30 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用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在头文件中没有定义,所以是错的。即使编译器没有报错。

相关帖子

沙发
dirtwillfly| | 2016-7-30 21:56 | 只看该作者
编译器不同,产生的执行文件不同是正常的

使用特权

评论回复
板凳
cehuafan| | 2016-7-30 22:07 | 只看该作者
我觉得可能你用的库不一样的。

使用特权

评论回复
地板
cehuafan| | 2016-7-30 22:09 | 只看该作者
不同的编译器的效果还能有什么区别吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

108

主题

843

帖子

2

粉丝