void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
// Is this an RX interrupt?
if(INTGetFlag(INT_SOURCE_UART_RX(UART_MODULE_ID)))
{
// Echo what we just received.
putcUART2(ReadUART2());
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(UART_MODULE_ID));
// Toggle LED to indicate UART activity
mPORTAToggleBits(BIT_0);
}
}
void __ISR(_UART2_VECTOR, ipl2) IntUart2Handler(void)
{
// Is this an RX interrupt?
if(INTGetFlag(INT_SOURCE_UART_RX(UART_MODULE_ID)))
{
// Clear the RX interrupt Flag
INTClearFlag(INT_SOURCE_UART_RX(UART_MODULE_ID));
// Echo what we just received.
putcUART2(ReadUART2());
// Toggle LED to indicate UART activity
mPORTAToggleBits(BIT_0);
}
}
使用串口调试助手,键盘信息发送至串口显示
大家看出来什么区别了吗?
没错,仅仅是INTClearFlag和 putcUART2(ReadUART2())两个函数调换了次序
第一段程序是修改后的,能够正常从键盘读取字符。
第二段是PIC官方外设库的程序,代码执行的时候,每次都回显2个字符的数据,其中一个字符是上一次缓存的字符,赶脚是中断出现2次。
不科学啊
这个外设库,还能再坑一点吗?
我要赚赏金
