0

mspgcc コンパイラと連携するために Eclipse と CDT を使用しています。コンパイルは正常に行われますが、コード ビューではすべての特殊関数レジスタが未解決として強調表示されます。

コンパイラが "msp430-gcc -mmcu=msp430x2012" である C プロジェクトを作成しました。これは、/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
}

P1OUT や WDTCTL などの mspgcc インクルードで定義されているすべての変数は、問題ボックスに「未解決」として表示されますが、正常にビルドされることを覚えておいてください。チップのヘッダー ファイルを明示的にインクルードすることも試みました (通常、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 に答える