使用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在头文件中没有定义,所以是错的。即使编译器没有报错。 |