打印
[PIC®/AVR®/dsPIC®产品]

dspic33ev256gm104接收中断问题

[复制链接]
582|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang999991|  楼主 | 2023-2-12 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;
}


使用特权

评论回复
沙发
wang999991|  楼主 | 2023-2-13 13:23 | 只看该作者
问题已解决,接收到的数据必须取出

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝