SPI串口DMA接受不定长数据,数据发送在总线空闲时产生中断,总线空闲指的是TC标志为高电平,而不是只发送信号每发送完一帧数据后的高电位
if(USART_GetITStatus(USART1, USART_IT_IDLE) !=RESET)
{
USART_ClearFlag(USART1,USART_IT_IDLE);
temp = USART1->SR;
temp = USART1->DR; //清USART_IT_IDLE标志
DMA_Cmd(DMA1_Channel5,DISABLE);
DMA_Cmd(DMA1_Channel5,DISABLE);
temp = UART_RX_LEN -DMA_GetCurrDataCounter(DMA1_Channel5);
for (i = 0;i < temp;i++)
{
Data_Receive_Usart= Uart_Rx[i];
//启动串口状态
usart_state_run();
}
//设置传输数据长度
DMA_SetCurrDataCounter(DMA1_Channel5,UART_RX_LEN);
DMA_Cmd(DMA1_Channel5,ENABLE);
}