在下用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.百思不得其解,向各位请教.谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>