MSP430错误:';::主要';必须返回';int';
我试过了 如果我尝试将其上载到MSP430G2452,我会遇到一个错误: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
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()