打印

dspic30f2010

[复制链接]
4568|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kindwyw|  楼主 | 2011-3-24 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人做一款全桥逆变控制程序,调试老出现如下错误: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)
    {
    }   
}
沙发
skygrow| | 2011-3-24 14:36 | 只看该作者
#include"p30f2010.h"
void __attribute__((interrupt,no_auto_psv)) _U1RXInterrupt(void);
这个声明要加分号的吧

使用特权

评论回复
板凳
nicklee112233| | 2011-3-24 17:27 | 只看该作者
楼上的应该是正解!

使用特权

评论回复
地板
Mary_luo| | 2011-3-25 09:50 | 只看该作者
已发短消息给您:)

使用特权

评论回复
5
kindwyw|  楼主 | 2011-3-31 13:54 | 只看该作者
问题还没解决,期待高手回复,谢谢

使用特权

评论回复
6
zhixin15| | 2015-8-7 15:59 | 只看该作者
DSPIC30F2010 解密交流qq2424720092

使用特权

评论回复
7
michaellengleng| | 2015-8-7 16:04 | 只看该作者
PIC技术支持   d __attribute__((interrupt,no_auto_psv)) _U1RXInterrupt(void);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

55

帖子

2

粉丝