串口的发送是正常的,但是用串口助手发送数据给单片机,无法进入串口接收中断。
在线调试能发现,只有烧写程序开始第一次,能进入接收中断。
具体什么原因引起,实在不清楚。
void USART_Init(uint16 baud)//设置串口为8bit,1stop bit,0奇偶校验
{
RPINR18bits.U1CTSR = 0;
RPINR18bits.U1RXR = 17;//配置RP17为串口1的RxD引脚,实际未用此功能
RPOR5bits.RP10R = 3;//配置RP10为串口1的TxD引脚
U1BRG = baud;
U1MODEbits.USIDL = 1;//模块空闲模式下不工作
U1MODEbits.UEN = 0;//使能U1TX,U1RX,禁用CTS、RTS引脚
#ifdef USART_HIGH_SPEED
U1MODEbits.BRGH = 1;//高速模式
#endif
U1MODEbits.PDSEL = 0;//8位数据位,无奇偶校验
U1MODEbits.STSEL = 0;//1停止位
U1MODEbits.ABAUD = 0;
U1STAbits.URXISEL = 0;//缓冲器收到数据马上中断
IFS0bits.U1RXIF = 0;//中断标志清零
IEC0bits.U1RXIE = 1;//UART1接收器中断允许
IPC2bits.U1RXIP = 7;
U1MODEbits.UARTEN = 1;//使能串口
U1STAbits.UTXEN = 1;//使能发送
}
初始化代码如上。 |