串口2接收数据时,丢数据:发4个字节的数据,只能响应1或2个中断(1个中断收一个字节的数据)??
代码如下:
void SIGNAL_Usart2_RX(void) //接收中断
{
u8 data;
data = USART_ReceiveData(USART2); //
UART2_RxBuf[tmphead++] = data;
}
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET) //JQB MODIFY: 原来是 != RESET ;
{
USART_ClearITPendingBit(USART2, USART_IT_RXNE); //JQB COMMENT
SIGNAL_Usart2_RX();
}
//JQB ADD BEGIN
//溢出-如果发生溢出需要先读SR,再读DR寄存器则可清除不断入中断的问题[牛人说要这样]
if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
{
USART_ClearFlag(USART2,USART_FLAG_ORE); //读SR其实就是清除标志
USART_ReceiveData(USART2); //读DR
}
//END
if(USART_GetITStatus(USART2,USART_IT_TXE)==SET)
{
USART_ClearITPendingBit(USART2,USART_IT_TXE); //
SIGNAL_Usart2_TX();
}
}
|