Loading...
 
Skip to main content

System Workbench for STM32


UART circular buffer

Hi
My example for UART DMA

  1. define MAX_NUM_CHAR_FOR_MESSAGE 64

  2. ifdef UART_1

extern UART_HandleTypeDef huart1;

  1. define BUFFER_UART1_TX_MAX MAX_NUM_CHAR_FOR_MESSAGE
  2. define CIRCULAR_BUFFER_UART1_RX_MAX 256
  3. ifdef UART_1_DMA

extern DMA_HandleTypeDef hdma_usart1_rx;

  1. endif
  2. 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;
}

 
Collapse/expand modules below