MSP430错误:';::主要';必须返回';int';

MSP430错误:';::主要';必须返回';int';,int,msp430,Int,Msp430,我试过了 如果我尝试将其上载到MSP430G2452,我会遇到一个错误:error:'::main'必须返回'int'。 论坛上没有人写过这个错误。这有什么问题吗 #include "msp430g2553.h" #define T05 300 #define T25 T05*5 #define T35 T05*7 #define T50 T05*10 #define TMAX 65000 #define IR_DETECTOR_PIN BIT1 void reset(); unsign

我试过了

如果我尝试将其上载到MSP430G2452,我会遇到一个错误:
error:'::main'必须返回'int'
。 论坛上没有人写过这个错误。这有什么问题吗

#include "msp430g2553.h"

#define T05 300
#define T25 T05*5
#define T35 T05*7
#define T50 T05*10
#define TMAX 65000

#define IR_DETECTOR_PIN BIT1

void reset();

unsigned int rxData = 0; // received data: A4-A0 and C6-C0 0000 AAAA ACCC CCCC
unsigned int bitCounter = 0;

void main(void) {
    WDTCTL = WDTPW + WDTHOLD; // stop WDT
    BCSCTL1 = CALBC1_1MHZ; // load calibrated data
    DCOCTL = CALDCO_1MHZ;

    P1OUT &= ~(BIT0 + BIT6); // P1.0 & P1.6 out (LP LEDs)
    P1DIR |= (BIT0 + BIT6);

    P1REN |= IR_DETECTOR_PIN; // P1.1 pull-up
    P1OUT |= IR_DETECTOR_PIN; // P1.1 pull-up
    P1IE |= IR_DETECTOR_PIN; // P1.1 interrupt enabled
    P1IES |= IR_DETECTOR_PIN; // P1.1 high/low edge
    P1IFG &= ~IR_DETECTOR_PIN; // P1.1 IFG cleared

    CCR0 = TMAX; // interrupt if no edge for T32
    TACTL = TASSEL_2 + MC_1; // SMCLK, up mode

    __bis_SR_register(LPM0_bits + GIE);
    // switch to LPM0 with interrupts
}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void) {

    if (P1IFG & IR_DETECTOR_PIN) {
        P1IE &= ~IR_DETECTOR_PIN;

        if (bitCounter == 0) {
            P1IES &= ~IR_DETECTOR_PIN; // P1.1 low/high edge
            bitCounter++;
            TACTL |= TACLR;
            TACTL |= MC_1;
            CCTL0 = CCIE;
        } else {
            switch (bitCounter) {
            case 14: // received all bits
                // process received data, for example toggle LEDs
                switch (rxData & 0x001F) { // mask device number
                case 19: // Volume -    0010011 = 19
                    P1OUT ^= BIT0;
                    break;
                case 18: // Volume +    0010010 = 18
                    P1OUT ^= BIT6;
                    break;
                case 21: // Power   0010101 = 21
                    P1OUT |= BIT6;
                    P1OUT |= BIT0;
                    break;
                case 20: // Mute    0010100 = 20
                    P1OUT &= ~BIT6;
                    P1OUT &= ~BIT0;
                    break;
                }
                reset();
                break;
            case 1: // start bit?
                if (TA0R < T35) { // could also add || TA0R > T50
                    reset();
                } else {
                    TACTL |= TACLR;
                    TACTL |= MC_1;
                    bitCounter++;
                }
                break;
            default: // data bit
                rxData >>= 1;
                if (TA0R > T25) {
                    rxData |= 0x0800; // set bit 12 of rxData
                }
                TACTL |= TACLR;
                TACTL |= MC_1;
                bitCounter++; // increase bit counter
                break;
            }
        }
        P1IFG &= ~IR_DETECTOR_PIN;
        P1IE |= IR_DETECTOR_PIN;
    }
}

void reset() {
    CCTL0 &= ~CCIE;
    P1IES |= IR_DETECTOR_PIN; // P1.1 high/low edge
    rxData = 0;
    bitCounter = 0;
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void) {
    // reset
    P1IE &= ~IR_DETECTOR_PIN;
    reset();
    P1IFG &= ~IR_DETECTOR_PIN;
    P1IE |= IR_DETECTOR_PIN;
}

  [1]: http://forum.43oh.com/topic/288-launchpad-ir-receiver/?p=29591
#包括“msp430g2553.h”
#定义T05300
#定义T25 T05*5
#定义T35 T05*7
#定义T50 T05*10
#定义TMAX 65000
#定义红外探测器引脚位1
无效重置();
无符号整数rxData=0;//接收数据:A4-A0和C6-C00000 AAAA ACCC CCCC
无符号整数位计数器=0;
真空总管(真空){
WDTCTL=WDTPW+WDTHOLD;//停止WDT
BCSCTL1=CALBC1_1MHZ;//加载校准数据
DCOCTL=CALDCO_1MHZ;
P1OUT&=~(BIT0+BIT6);//P1.0和P1.6输出(LP LED)
P1DIR |=(位0+位6);
P1REN |=红外探测器_引脚;//P1.1上拉
P1OUT |=红外探测器_引脚;//P1.1上拉
P1IE |=红外探测器_引脚;//P1.1中断已启用
P1IES |=红外探测器_引脚;//P1.1高/低边缘
P1IFG&=~IR\U探测器\U引脚;//P1.1 IFG已清除
CCR0=TMAX;//如果T32没有边缘,则中断
TACTL=TASSEL_2+MC_1;//SMCLK,上行模式
__bis_SR_寄存器(LPM0_位+GIE);
//通过中断切换到LPM0
}
//端口1中断服务程序
#pragma向量=端口1\u向量
__中断无效端口_1(无效){
中频(P1IFG和红外探测器引脚){
P1IE&=~IR\U探测器\U引脚;
如果(位计数器==0){
P1IES&=~IR\u检测器\u引脚;//P1.1低/高边缘
位计数器++;
TACTL |=TACLR;
TACTL |=MC|u 1;
CCTL0=CCIE;
}否则{
交换机(位计数器){
案例14://接收到所有位
//处理接收到的数据,例如切换LED
开关(rxData&0x001F){//掩码设备编号
案例19://卷-0011=19
P1OUT^=位0;
打破
案例18://卷+0010=18
P1OUT^=位6;
打破
案例21://power0010101=21
P1OUT |=位6;
P1OUT |=位0;
打破
案例20://静音0010100=20
P1OUT&=~位6;
P1OUT&=~BIT0;
打破
}
重置();
打破
案例1://起始位?
如果(TA0RT50
重置();
}否则{
TACTL |=TACLR;
TACTL |=MC|u 1;
位计数器++;
}
打破
默认值://数据位
rxData>>=1;
如果(TA0R>T25){
rxData |=0x0800;//设置rxData的第12位
}
TACTL |=TACLR;
TACTL |=MC|u 1;
bitCounter++;//增加位计数器
打破
}
}
P1IFG&=~IR\U探测器\U引脚;
P1IE |=红外探测器引脚;
}
}
无效重置(){
CCTL0&=~CCIE;
P1IES |=红外探测器_引脚;//P1.1高/低边缘
rxData=0;
位计数器=0;
}
#pragma向量=TIMER0\u A0\u向量
__中断无效计时器(无效){
//重置
P1IE&=~IR\U探测器\U引脚;
重置();
P1IFG&=~IR\U探测器\U引脚;
P1IE |=红外探测器引脚;
}
[1]: http://forum.43oh.com/topic/288-launchpad-ir-receiver/?p=29591

编译器希望主函数的返回类型为
int

改变

void main(void)
致:


添加
返回0
main()

的末尾,您是否解决了问题?请注意,这些错误中有许多是通用的C/C++错误,并非特定于MSP430。您可以只搜索错误,而不指定MSP430。
int main()