STM32空闲中断
收发共存的思路没有经过验证!!!
空闲中断:既可以用来作为不定长接收数据帧的断帧判断/特别是DMA数据的接收,也可以用来指示中断发送的结束。
在需要发送的地方USART_ITConfig(UART5, USART_IT_IDLE, ENABLE);
在接收的中间USART_ITConfig(UART5, USART_IT_IDLE, ENABLE);
在空闲中断里面分清是发送结束还是接收结束
void UART5_IRQHandler(void)
{
if(USART_GetITStatus(UART5,USART_IT_TC))
{
}
if(USART_GetITStatus(UART5,USART_IT_RXNE))
{
}
if(USART_GetITStatus(UART5,USART_IT_IDLE))/*空闲中断*/
{
status = UART5->SR;
status = UART5->DR;/*清标志*/
for(i=0;i<PrintDMA.Prtsize;i++)/*数据缓存*/
{
Rbuff[i] = *(PrintDMA.pPrt+i);
}
PrintDMA.pPrt = NULL;/*接收数据指针和长度归零*/
PrintDMA.Prtsize =0;
Flag_PrtFinished =TRUE;
USART_ITConfig(UART5,USART_IT_RXNE, DISABLE); //
USART_ITConfig(UART5, USART_IT_IDLE, DISABLE); //
}
}