UART circular buffer
Hi
My example for UART DMA
- define MAX_NUM_CHAR_FOR_MESSAGE 64
- ifdef UART_1
extern UART_HandleTypeDef huart1;
- define BUFFER_UART1_TX_MAX MAX_NUM_CHAR_FOR_MESSAGE
- define CIRCULAR_BUFFER_UART1_RX_MAX 256
- ifdef UART_1_DMA
extern DMA_HandleTypeDef hdma_usart1_rx;
- endif
- endif
HAL_StatusTypeDef InitUart_IT_DMA(BYTE ucCom)
{
HAL_StatusTypeDef ret = HAL_ERROR;
switch (ucCom) {
#ifdef UART_1
case UART_1:
bTx1Running = FALSE;
#ifdef UART_1_DMA
ret = HAL_UART_Receive_DMA(&huart1, (uint8_t *)ucRx1, CIRCULAR_BUFFER_UART1_RX_MAX);
uiIdxWrRx1 = CIRCULAR_BUFFER_UART1_RX_MAX - hdma_usart1_rx.Instance->NDTR;
#else
uiIdxWrRx1 = 0;
ret = HAL_UART_Receive_IT(&huart1, (uint8_t *) &ucRx1uiIdxWrRx1, 1);
#endif
uiIdxRdRx1 = uiIdxWrRx1;
break;
#endif
default:
ret = HAL_ERROR;
break;
}
return ret;
}