本人做一款全桥逆变控制程序,调试老出现如下错误:30f2010a.c: In function '_U1RXInterrupt':
30f2010a.c:19: error: syntax error before '{' token,由于第一次用C写PIC程序,请高手门帮看下下如下程序,是否正确,谢谢!
**********************************************/
#include"p30f2010.h"
void __attribute__((interrupt,no_auto_psv)) _U1RXInterrupt(void)
/*****************PWM 初始化子程序 *******************************/
void init_PWM()
{
PTCON=0X0000 ; /*PWM时基控制寄存器*/
PTMR=0X0000 ; //PWM时基寄存器,0-14bit为时基寄存器记数值
PTPER=50 ; //PWM时基周期寄存器,20KHz(50uS
SEVTCMP=0X0000 ; //特殊事件比较寄存器
PWMCON1=0X0FFF ; //PWMxH,PWMxL使能为互补输出模式
PWMCON2=0X0003 ; //控制寄存器2
DTCON1=0X3FF ; //死区时间控制寄存器1
//DTCON2=0X000F ; //死区时间控制寄存器2
FLTACON=0X008F ; //故障A控制寄存器
//FLTBCON=0X008F ; //故障B控制寄存器
//OVDCON=0X00FF ; //改写控制寄存器
PDC1=50 ; //PWM占空比寄存器1,为50
PDC2=50 ; //PWM占空比寄存器2,为50
PDC3=50 ;
PTCON=0X8000 ; //PWM启动
}
/****************************UART初始化子程序*********************/
void init_UART(void)
{
U1MODE=0X8800 ; //使能UART模块
U1STA=0X0000 ;
U1BRG=129.21 ; //((FCY/16)/BAUD)-1 =129.21设置波特率=BAUD
IPC2bits.U1TXIP = 5 ; // 设置uart1接收中断优先级为5
IPC2bits.U1RXIP = 5 ; // 设置uart1接收中断优先级为5
U1STAbits.UTXEN=1 ; //发送使能
IEC0bits.U1TXIE=1 ; //发送中断使能
IEC0bits.U1RXIE=1 ; //接收中断使能
IFS0bits.U1TXIF = 0 ; // 清UART1发送中断标志位
IFS0bits.U1RXIF = 0 ; // 清UART1接收中断标志位
}
/****************************UART中断服务程序*********************/
void __attribute__((interrupt,no_auto_psv)) _U1RXInterrupt(void)
{
IFS0bits.U1RXIF = 0; // 清UART1接收中断标志位
if(uart1_rec_counter < 10)
{
uart1_rec_buffer[uart1_rec_counter] = U1RXREG; // 接收数据
uart1_rec_counter++; // 接收数据计数器加1
}
else
{
uart1_rec_counter = 0; // 接收数据计数器加1
}
if(U1STAbits.OERR)
U1STAbits.OERR = 0;
U1MODE = 0x8800; //使能UART模块
Nop();Nop();
U1STAbits.UTXEN = 1; //Enable Transmit
IEC0bits.U1RXIE = 1; //Enable Receive Interrupt
}
/***************** MAIN ROUTINE(主程序)**************************/
int main()
{
TRISEbits.TRISE0=0; //设置RE0-RE3为输出8、
TRISEbits.TRISE1=0;
TRISEbits.TRISE2=0;
TRISEbits.TRISE3=0;
LATEbits.LATE0=0;
LATEbits.LATE1=0;
LATEbits.LATE2=0;
LATEbits.LATE3=0;
init_PWM();
init_UART();
while(1)
{
}
} |