uint8_t UART_DMA_Send(uint8_t *data, uint16_t len)
{
if (uart_dma_status == UART_DMA_TX_BUSY) {
return 1;
}
if (len == 0 || len > UART_DMA_TX_BUF_SIZE) {
return 1;
}
if (DMA_GetFlagStatus(DMA1_FLAG_TC4) != RESET) {
DMA_ClearFlag(DMA1_FLAG_TC4);
}
memcpy(uart_dma_tx_buffer, data, len);
uart_dma_tx_len = len;
uart_dma_status = UART_DMA_TX_BUSY;
DMA_Cmd(DMA1_Channel4, DISABLE);
DMA1_Channel4->CNDTR = len;
DMA_Cmd(DMA1_Channel4, ENABLE);
return 0;
} 发送忙的标记在DMA发送中断里面清零 非阻塞发送
|