0

我正在使用 Eclipse 和 CDT 与 mspgcc 编译器一起工作,它编译得很好,但是代码视图将我所有的特殊函数寄存器突出显示为未解析。

我创建了一个 C 项目,其中编译器是“msp430-gcc -mmcu=msp430x2012”,它设置为在 /usr/msp430/include/ 中查找包含。我已将链接器设置为“msp430-gcc -mmcu=msp430x2012”,并且设置为在 /usr/msp430/lib/ 中查找库。我已将汇编器设置为“msp430-as”。我告诉 eclipse 它正在制作一个精灵,并且我禁用了自动包含发现以在我的 linux 机器上找不到 i686 库(愚蠢的 eclipse!)。

这是代码:

#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
}

mspgcc 中定义的所有变量包括 P1OUT 和 WDTCTL 在问题框中显示为“未解决”,但请记住它构建得很好。我什至尝试过明确地包含我的芯片的头文件(通常 msp430-gcc 通过 msp430.h 和 -mmcu 选项执行此操作)。

4

2 回答 2

1

我通过明确包含 msp430g2553.h 文件解决了这个问题

#include <msp430g2553.h>
于 2012-09-08T19:18:24.063 回答
0

我按照这里的说明解决了这个问题

于 2013-07-30T13:37:57.150 回答