c++ - 将 TI 链接器命令文件与 Clang 结合使用

标签 c++ clang msp430

当使用 TI(德州仪器)编译器时,我可以通过 ADC12IFG = 50; 使用 C++ 设置嵌入式微 Controller 的内存位置。 Clang 将此代码标记为错误:indirection requires pointer operand ('int' invalid)。因此,当我深入研究它时,TI 有一个头文件 msp430f5335.h,其中包含以下几行:

#define SFR_16BIT(address)  extern volatile unsigned int address
SFR_16BIT(ADC12IFG);                          /* ADC12+ Interrupt Flag */

然后是链接器命令文件 msp430f5335.cmd,其中包含以下行:

ADC12IFG           = 0x070A;

所以看起来链接器命令文件指定了地址。那么是否有可能让clang分析工具识别链接器命令文件而不导致误报呢?

最佳答案

Clang 旨在与 GCC 兼容。

TI 的头文件 ( msp430-gcc-support-files ) 使用以下机制来定义内存映射寄存器变量:

#define sfrw_(x,x_) extern volatile unsigned int x asm(#x_)
#define sfrw(x,x_) sfrw_(x,x_)

#define ADC12IFG_             0x070A    /* ADC12+ Interrupt Flag */
sfrw(ADC12IFG, ADC12IFG_);

(这不需要链接器命令文件。)

关于c++ - 将 TI 链接器命令文件与 Clang 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904052/

相关文章:

c++ - 初学者 openGL 项目渲染三角形的问题

c++ - 如何使用静态 ID 计数器初始化用户定义对象数组?

c - 有没有一种安全的方法来指定一个对象的值可能因为从未使用过而未初始化?

c++ - ((CXXMethodDecl*)(VarDecl->getParentFunctionOrMethod())) 中的 CLang 程序段错误

msp430 - IAR Embedded Workbench 无法找到文件,Pe1696,即使它正在搜索它们

c++ - 在 C++ 中,多继承类中的下划线符号是什么意思?

c++ - -mmacosx-version-min 影响位域的打包行为?

Contiki,MSP430 : relocation truncated to fit symbols errors

c - 如何使用 C 在 mspgcc 中启用/禁用中断?

c++ - 将类似涂鸦功能后的客户区保存为图像