uartBufferIT.c 989 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * uartBufferIT.h
  3. *
  4. * Created on: Aug 22, 2022
  5. * Author: yoojin.lim
  6. *
  7. * 1. Current MAX buffer size : 65535 (ref. range of uint16)
  8. * 2. Consider DMA and circular queue if you need data read over 65535 bytes
  9. */
  10. #include <stdio.h>
  11. #include "main.h"
  12. #include "ImC/uartBufferIT.h"
  13. #include "string.h"
  14. uint8_t rxBuffer[RX_BUFFER_SIZE];
  15. /* Initialize the Ring Buffer */
  16. void uartBufferInit (void)
  17. {
  18. memset(rxBuffer, '\0', RX_BUFFER_SIZE);
  19. HAL_UARTEx_ReceiveToIdle_IT (&UART, (uint8_t *) rxBuffer, RX_BUFFER_SIZE);
  20. }
  21. /* Resets the Ring buffer */
  22. void uartBufferReset (void)
  23. {
  24. memset(rxBuffer, '\0', RX_BUFFER_SIZE);
  25. }
  26. void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
  27. {
  28. if (huart->Instance == UART_INSTANCE)
  29. {
  30. /* start the interrupt again */
  31. HAL_UARTEx_ReceiveToIdle_IT (&UART, (uint8_t *) rxBuffer, RX_BUFFER_SIZE);
  32. }
  33. printf("%s\r\n", rxBuffer);
  34. // DO SOMETHING HERE
  35. uartBufferReset();
  36. }