min 发表于 2012-8-18 11:55:45

[求助]PIC24串口红外通信问题???急!!

下面是我在用串口2做红外通信时写的程序,不知为何连接收中断都进不去??

请高手帮我看看,那个地方有问题???

谢谢!!

void URTCF(void)       //配置串口2,将串口2用于红外发送和接收
{
...
// IrDA Configure
RPINR19bits.U2CTSR=18;      //Assign U2CTS To Pin RPI18
RPINR19bits.U2RXR=39;       //Assign U2RX To Pin RPI39
RPOR12bits.RP24R=5;         //Assign U2TX To Pin RP24
RPOR9bits.RP18R=6;          //Assign U2RTS(BLCK2) to Pin RP18
...
}
void Uart2Init(void)   //串口2初始化
{
FRxDHW=1;            //设置红外相应引脚的方向
FTxDHW=0;
FHWZB=0;
U2MODE=0x3082;      //use Rx and Tx only, BRGH=0, parity check = 0x01, stop bits = 1
U2BRG=0xCF;         //baud rate = 1200bps
IPC7bits.U2RXIP=7;//receiver interrupt priority = 7
IPC7bits.U2TXIP=7;//send interrupt priority = 7
U2STAbits.URXISEL=0;//receive interrupt mode
U2STAbits.UTXISEL0=0;
U2STAbits.UTXISEL1=0;//send interrupt mode
U2STAbits.UTXINV=0;    // enable IrDA code send convert bit
IEC1bits.U2TXIE=0;      //receive interrupt enable
IEC1bits.U2RXIE=1;
U2MODEbits.UARTEN=1;   //enable UART

_U2TXIF=0;
_U2RXIF=0;
U2STAbits.UTXEN=1;
flag=1;
RevcCount=0;
SendCount=0;
RNum=0;
}

void __attribute__((interrupt,no_auto_psv)) _U2TXInterrupt(void)   //发送中断
{
_U2TXIF=0;
if(SendCount<TNum)
   {
   U2TXREG=RevcBuff;
   SendCount++;
   }
else
    {
      CTL=0;
      RevcCount=0;
      RNum=0;
      TNum=0;
      SendCount=0;
      U2STAbits.UTXEN=0;
      IEC1bits.U2RXIE=1;
    }
flag=1;
}
void __attribute__((interrupt,no_auto_psv)) _U2RXInterrupt(void)   //接收中断
{
_U2RXIF=0;
RevcBuff=U2RXREG;
data2=RevcBuff;
if(RevcBuff==0xFE && RevcCount<7)
   {
   RevcCount=0;
   RevcBuff=0xFF;
   }
if(RevcCount==9)
   RNum=RevcBuff+11;
else if(RevcCount==7)
    {
      if(RevcBuff!=0x68)
      {
         RevcCount=0;
         RNum=0;
         RevcBuff=0xFF;
      }
    }

if(RevcCount==RNum && RevcCount>9 && RevcBuff==0x16)
    {
      flag=0;
      IEC1bits.U2TXIE=1;      //Send interrupt enable
      IEC1bits.U2RXIE=0;
    }
else if(RevcBuff==0x68)
         RevcCount++;

}

star 发表于 2012-8-18 14:33:43

中断进不去,还是查查配置吧。你的晶振是4M的吧?串口的奇偶校验这个也确认下

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=cn528001



这里有官方的协议栈,可以参考看看!
页: [1]
查看完整版本: [求助]PIC24串口红外通信问题???急!!