如何让EclipseCDT理解MSPGCC(MSP430)包含的内容?
我使用Eclipse和CDT与mspgcc编译器一起工作,它编译得很好,但是代码视图突出显示了我的所有特殊函数寄存器未解析 我制作了一个C项目,其中编译器是“msp430gcc-mmcu=msp430x2012”,设置为在/usr/msp430/include/中查找include。我已将链接器设置为“msp430gcc-mmcu=msp430x2012”,并将其设置为在/usr/msp430/lib/中查找库。我已将汇编程序设置为“msp430 as”。我已经告诉eclipse它正在制作一个elf,并且我已经禁用了automatic includes discovery,以便在我的linux机器上找不到i686库(愚蠢的eclipse!) 代码如下:如何让EclipseCDT理解MSPGCC(MSP430)包含的内容?,eclipse,eclipse-cdt,msp430,Eclipse,Eclipse Cdt,Msp430,我使用Eclipse和CDT与mspgcc编译器一起工作,它编译得很好,但是代码视图突出显示了我的所有特殊函数寄存器未解析 我制作了一个C项目,其中编译器是“msp430gcc-mmcu=msp430x2012”,设置为在/usr/msp430/include/中查找include。我已将链接器设置为“msp430gcc-mmcu=msp430x2012”,并将其设置为在/usr/msp430/lib/中查找库。我已将汇编程序设置为“msp430 as”。我已经告诉eclipse它正在制作一个e
#include <msp430.h>
#include <signal.h> //for interrupts
#define RED 1
#define GREEN 64
#define S2VAL 8
void init(void);
int main(void) {
init(); //Setup Device
P1OUT = GREEN; //start with a green LED
_BIS_SR(LPM4_bits); //Go into Low power mode 4, main stops here
return(1); //never reached, surpresses compiler warning
}
interrupt (PORT1_VECTOR) S1ServiceRoutine(void) {
//we wake the MCU here
if (RED & P1IN) {
P1OUT = GREEN;
} else {
P1OUT = RED;
}
P1IFG = 0; //clear the interrupt flag or we immidiately go again
//we resume LPM4 here thanks to the RETI instruction
}
void init(void) {
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
/*Halt the watchdog timer
P1DIR = ~S2VAL; //Set LED pins as outputs and S2 as input
P1IES = S2VAL; //interrupt on High to Low
P1IE = S2VAL; //enable interrupt for S1 only
WRITE_SR(GIE); //enable maskable interrupts
}
#包括
#包括//中断
#定义红色1
#定义绿色64
#定义S2VAL 8
void init(void);
内部主(空){
init();//安装设备
P1OUT=绿色;//从绿色LED开始
_BIS_SR(LPM4_位);//进入低功耗模式4,主要停止在此处
return(1);//从未到达,超出编译器警告
}
中断(端口1_向量)S1ServiceRoutine(无效){
//我们在这里唤醒MCU
if(红色和P1IN){
P1OUT=绿色;
}否则{
P1OUT=红色;
}
P1IFG=0;//清除中断标志,否则我们立即再次执行
//由于RETI的指示,我们在这里恢复LPM4
}
void init(void){
WDTCTL=WDTPW+WDTHOLD;//停止WDT
/*停止看门狗定时器
P1DIR=~S2VAL;//将LED引脚设置为输出,将S2设置为输入
P1IES=S2VAL;//从高到低中断
P1IE=S2VAL;//仅为S1启用中断
WRITE_SR(GIE);//启用可屏蔽中断
}
mspgcc中定义的所有变量,如P1OUT和WDTCTL,在问题框中显示为“未解决”,但请记住,它构建得很好。我甚至尝试过显式包含我芯片的头文件(通常msp430 gcc通过msp430.h和-mmcu选项来实现)。我通过显式包含msp430g2553.h文件解决了这个问题
#include <msp430g2553.h>
#包括
我按照说明解决了这个问题我也这样做了,尽管我把它放在了#ifndef编译
之类的东西中。然后在我的Makefile中,我将-DCOMPILING
添加到CFLAGS中。请注意,虽然我没有使用Eclipse,但我使用了带有youcompleteme插件的Vim,但我认为Eclipse足够聪明,可以处理类似的事情。