MSP430中的_EINT、_BIS_SR、_NOP的使用
#include "io430.h"
void main( void )
{
}
#pragma vector =WDT_VECTOR
__interrupt void watchdog_timer(void)
{
}
但make后報錯如下:
Undefined external"_EINT" referred in "main"
Undefined external"_BIS_SR" referred in "main"
Undefined external"_NOP" referred in "main"
意思應(yīng)該是"_EINT"、"_BIS_SR"、"_NOP"沒有被定義。猜到應(yīng)該是相關(guān)為文件沒有被包含進來的原因。于是上網(wǎng)查找后找到了原因:
如果你在IAR中添加入軟件自帶的例程(右鍵——Add Files,路徑一般為C:Program FilesIAR SystemsEmbedded Workbench 6.0 Evaluation430FET_examplesFET_examples,大同小異)并打開會發(fā)現(xiàn),例程的開始并不是#include "io430.h",而是#include "msp430.h",并有一個"in430.h"一同包含進來。打開"in430.h"后就找到了上述三個宏定義:
#define _EINT()
__intrinsic unsigned short _BIS_SR_IRQ(unsigned short);
#define _NOP()
所以,將原程序的#include "io430.h"改為#include "msp430.h",再make就沒有錯誤了。
或者,不替換#include "io430.h",而是在后面添加#include "in430.h",程序也會順利通過的。
若有欠妥之處,還望批評指正,共同進步。
評論