急求UART问题!!!!!

2019-03-25 19:42发布

紧急求助!!!!哪位高手指点一下,问题到底在哪里!!!谢谢了!!! 我用PIC24F16KA102单片机的UART1做串口通信程序,现在有个很棘手的问题:可以发送出去,但是接收不了(接收状态标志没有,也没有产生中断)。 下面是我的设置和接收程序: void uart1_init(void)
{
 IEC0bits.U1RXIE = 0;   //Disable Receive Interrupt 
 IEC0bits.U1TXIE = 0;   //Disable Receive Interrupt 
 U1STAbits.UTXEN = 0;   //Disable Transmit
 U1MODEbits.UARTEN = 0;   //Disable uart1   U1BRG = 51;      //FCY/(16*2400)-1=51.083  IPC3bits.U1TXIP = 5;   // 设置uart1接收中断优先级为5
 IPC2bits.U1RXIP = 5;   // 设置uart1接收中断优先级为5  U1STA = 0;  U1MODE = 0x8000;     //Enable Uart for 8-bit data,no parity,1 STOP bit,wake enabled 
 Nop();Nop();
 U1STAbits.UTXEN = 1;   //Enable Transmit  U1STAbits.URXDA = 0;
 IFS0bits.U1TXIF = 0;            // 清UART1发送中断标志位
 IFS0bits.U1RXIF = 0;            // 清UART1接收中断标志位
 
 IEC0bits.U1RXIE = 1;   //Enable Receive Interrupt
}   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
   break;
  }     if(U1STAbits.OERR)     U1STAbits.OERR = 0;
 U1MODE = 0x8000;     //Enable Uart for 8-bit data,no parity,1 STOP bit,wake enabled 
 Nop();Nop();
 U1STAbits.UTXEN = 1;   //Enable Transmit
 IEC0bits.U1RXIE = 1;   //Enable Receive Interrupt
}   紧急求助!!!!哪位高手指点一下,问题到底在哪里!!!谢谢了!!! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。