uart.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * uart.c
  3. *
  4. * Created on: 2019. 5. 27.
  5. * Author: parkyj
  6. */
  7. #include "uart.h"
  8. UARTQUEUE TerminalQueue;
  9. UARTQUEUE WifiQueue;
  10. void InitUartQueue(pUARTQUEUE pQueue)
  11. {
  12. pQueue->data = pQueue->head = pQueue->tail = 0;
  13. }
  14. void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data)
  15. {
  16. pUARTQUEUE pQueue = &TerminalQueue;
  17. if (pQueue->data >= QUEUE_BUFFER_LENGTH)
  18. GetDataFromUartQueue(huart);
  19. pQueue->Buffer[pQueue->head++] = data;
  20. if (pQueue->head == QUEUE_BUFFER_LENGTH) pQueue->head = 0;
  21. pQueue->data++;
  22. }
  23. void GetDataFromUartQueue(UART_HandleTypeDef *huart)
  24. {
  25. UART_HandleTypeDef *dst = (huart->Instance == USART1 ? &hWifi:&hTerminal);
  26. pUARTQUEUE pQueue = &TerminalQueue;
  27. buf[uartindex++] = *(pQueue->Buffer + pQueue->tail);
  28. pQueue->tail++;
  29. if (pQueue->tail >= QUEUE_BUFFER_LENGTH) pQueue->tail = 0;
  30. pQueue->data--;
  31. if(pQueue->data == 0)
  32. UartDataRecvSet(1);
  33. HAL_Delay(1);
  34. }
  35. void Uart1_Data_Send(uint8_t* data,uint8_t size){
  36. HAL_UART_Transmit_DMA(&huart1, data,size);
  37. }
  38. void Uart3_Data_Send(uint8_t* data,uint8_t size){
  39. HAL_UART_Transmit_DMA(&huart3, data,size);
  40. }