usart.c
// dma中断回调
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if (huart->Instance == UART7)
{
if ( Size <= RXBUFFERSIZE_7)
{
HAL_UART_DMAStop(huart);
//发送回去
HAL_UART_Transmit_DMA(huart, RxBuff_7, Size );
printf("7空闲,%d\n",Size);
receives_uaru_7();
}
}
}
// dma 错误回调
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == UART7)
{
printf("串口7 dma 发生错误 可能是数据缓冲区溢出\n");
receives_uaru_7();
}
}
// DMA 空闲检查
void receives_uaru_7(void)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart7, RxBuff_7, RXBUFFERSIZE_7);
}