This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F5529:升级到TI 16.9 453.0.LTS导致警告

Guru**** 2553390 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/586059/compiler-msp430f5529-upgrade-to-ti-v16-9-0-lts-caused-warnings

部件号:MSP430F5529

工具/软件:TI C/C++编译器

我将固件从TI V15.??.LTS升级到最新的16.9 编译器.G.0.LTS,并且在构建项目时出现了一些新错误。  我不清楚该怎么办。  该代码有效,但我还在半路上开发,需要添加更多内容,所以我现在想处理这些警告,这样它不会在以后变成一个潜在的更大问题。

我的固件编码很乱,所以不确定我在看什么。

这是代码。

int UART_getchar (void)
{
int retval =-1;
字符c =-1;

如果(ring_buffer_get (_rbd,&c)== 0){
RetVal =(int) c;
}

返回retval;
} 

行char c =-1;  已导致警告"Integer conversion caused in a change of sign" (整数转换导致符号更改),当然,这是因为它是Char。  但是 ,当我将其更改为int C =1时,我在中断向量处得到了一个新的错误。

#pragma vector= USCIAB0RX_vector
__interrupt void RX_ISR(void)
{

IF (UCA0IFG和UCRXIFG)
{
const char c = UCA0RXBUF;

/*清除中断标志*/
UCA0IFG &=~UCRXIFG;

ring_buffer_put (_rbd,&c);
}
} 

警告读数为"pragma vector=接受数字参数或"未使用的中断",但不接受 USCIAB0RX_vector。

代码同样有效...但这些对我来说是奇怪的警告。  我不知道为什么将变量C从一个字符更改为一个INT会导致这个新的警告。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Chris from Pinterec 说:
    当我将其更改为int C =-1[/QUOT]时

    进行该更改时,传递给ring_buffer_get的第二个参数的类型从"char *"更改为"int *"。  我很确信这会导致问题。

    关于...

    Chris from Pinterec 说:
    警告为"pragma vector=接受数值参数或"未使用的中断",但不 接受USCIAB0RX_vector

    最可能的解释是,在以前的内部版本中 ,USCIAB0RX_Vector是一个#define名称,被常量替换。  由于某种原因,创建 USCIAB0RX_Vector的#define不再存在。  它通常来自<MSP4S.h>包含文件。

    谢谢,此致,

    -George