请教,用DSPIC33FJ32MC202的RB4做RX脚,遇到的问题

2020-02-07 09:38发布

在下用DSPIC33FJ32MC202的RB3做TX,查询发送;RB4做RX,中断接收;现在是发送正常.遇到的问题是,UART1
初始化后,上位机没有发送数据,DSPIC33FJ32MC202居然会跳入接收中断,且U1STAbits.URXDA =1,

void Init_Uart1(void)
{
        U1MODEbits.STSEL = 0;         // 1-stop bit
        U1MODEbits.PDSEL = 0;        // No Parity, 8-data bits
        U1MODEbits.UEN = 0;                 
        U1MODEbits.ABAUD = 0;         // Auto-Baud Disabled
        U1MODEbits.BRGH = 0;         // Low Speed mode
        U1MODEbits.URXINV = 1;        // RX空闲时=0        
        U1STAbits.URXISEL = 0;        // Interrupt after four RX character is received;

        IEC0bits.U1RXIE = 1;                // UART1接收中断使能  
        IFS0bits.U1RXIF = 0;                  // 复位接收中断标志位   
       
        U1MODEbits.UARTEN = 1;         // Enable UART

        U1STAbits.UTXEN = 1;                           
        IFS0bits.U1TXIF = 0;                            
}

void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt (void)
{       
        static unsigned int RX_count;
       
        IFS0bits.U1RXIF = 0;  
        if(U1STAbits.URXDA == 1)   
            {
                Rxdata[RX_count] = U1RXREG;             // 接收数据并存储  
                RX_count++;                        // 接收计数器加1  

                if(RX_count > 7)                          // 如果已经接收到8个数据  
                {  
                        RX_count = 0;                // 接收计数器清0  
                        U1DataFlags.Byte.Data_OK = 1;           // 置接收到数据标志            
                }
        }
}

如果上位机发8个字节的数据,程序能正常接收,就是收到的都是0.百思不得其解,向各位请教.谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Lu.Shi
1楼-- · 2020-02-07 13:38
可以一步一步软仿一下,先看看发送寄存器、接收寄存器的值和想发的值一样,如果发送寄存器都没有数据,那就是没有发出去,就不是接收0的问题
小混hun
2楼-- · 2020-02-07 18:00
你把这个脚的ad功能禁用了没有?
zwc58
3楼-- · 2020-02-07 20:45
多谢二位大哥的支持,ad功能禁用了,还不行,用仿真机查,发现能接受,就是第一个字节收不到.总感到DSPIC的片子好难用哦.谢谢!
huangxiaowei
4楼-- · 2020-02-07 22:39
   顶一下

一周热门 更多>