dspic33ev256gm104接收中断进入几次后就不再进入了,不知道为什么,代码如下。
void UART1_Init(void)
{
//设置I/O口为数字口
ANSELBbits.ANSB3 = 0;
ANSELCbits.ANSC0 = 0;
//UART TX
TRISBbits.TRISB3 = 0; //设置B3为TX
RPOR0bits.RP35R = 0b000001; //映射uart1,TX至RP35
//UART RX
TRISCbits.TRISC0 = 1; //设置C0为RX
RPINR18bits.U1RXR = 0b0110000; //映射uart1,RX至RP48
//设置波特率等
U1MODEbits.STSEL = 0; // 1-Stop bit
U1MODEbits.PDSEL = 0; // No Parity, 8-Data bits
U1MODEbits.ABAUD = 0; // Auto-Baud disabled
U1MODEbits.BRGH = 0; // Standard-Speed mode
U1BRG = BRGVAL; // Set baud-rate 115200
//interrupt
U1STAbits.URXISEL = 0b00; //当接收1个字符时时,中断标志置1
IFS0bits.U1RXIF = 0;
IEC0bits.U1RXIE = 1;
IPC2bits.U1RXIP = 0b011;
U1MODEbits.UARTEN = 1; // Enable UART
U1STAbits.UTXEN = 1; // Enable UART TX
// TRISCbits.TRISC1 = 0; //设置RC1为output
// PORTCbits.RC1 = 0; //输出为低
}
中断程序如下:
void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void)
{
// flagg = 1;
U1TXREG = 0xBB;
while(!U1STAbits.TRMT);
IFS0bits.U1RXIF = 0;
}
|