初级会员

- 积分
- 84
- 金钱
- 84
- 注册时间
- 2016-12-10
- 在线时间
- 11 小时
|

楼主 |
发表于 2016-12-13 11:12:15
|
显示全部楼层
感谢原子大大的回复。 中断服务函数如下:
void UART4_IRQHandler(void)
{
BYTE B_Uart4RcvData;
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(UART4, USART_IT_RXNE);
B_Uart4RcvData = USART_ReceiveData(UART4);
RecvTimes++;
if(B_Uart4Lock == UART_UNLOCK)
{
if(W_Uart4RecvIndex == W_Uart4ProcessIndex)
{
W_Uart4RecvIndex = 0;
W_Uart4ProcessIndex = 0;
W_Uart4Counter = 0;
}
}
if(W_Uart4RecvIndex >= Rx4BufferSize)
{
W_Uart4RecvIndex = 0;
}
RxBuffer4[W_Uart4RecvIndex++] = B_Uart4RcvData;
if(USART_GetFlagStatus(UART4,USART_FLAG_ORE) == SET) //溢出
{
USART_ClearFlag(UART4,USART_FLAG_ORE); //读SR
USART_ReceiveData(UART4); //读DR
Flag++ ;
}
}
} |
|