紧急求助!!!!哪位高手指点一下,问题到底在哪里!!!谢谢了!!!
我用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
}
紧急求助!!!!哪位高手指点一下,问题到底在哪里!!!谢谢了!!!
此帖出自
小平头技术问答
一周热门 更多>