uart(2434).c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * uart.c
  3. *
  4. * Created on: 2019. 5. 27.
  5. * Author: parkyj
  6. */
  7. #include "main.h"
  8. UARTQUEUE TerminalQueue;
  9. UARTQUEUE UbxQueue;
  10. void InitUartQueue(pUARTQUEUE pQueue)
  11. {
  12. pQueue->data = pQueue->head = pQueue->tail = 0;
  13. }
  14. #if 0 // PYJ.2019.06.20_BEGIN --
  15. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  16. {
  17. pUARTQUEUE pQueue;
  18. pQueue = (huart->Instance == USART1 ? &TerminalQueue:&UbxQueue);
  19. pQueue->head++;
  20. if (pQueue->head >= QUEUE_BUFFER_LENGTH) pQueue->head = 0;
  21. pQueue->data++;
  22. if (pQueue->data >= QUEUE_BUFFER_LENGTH)
  23. GetDataFromUartQueue(huart);
  24. HAL_UART_Receive_IT(huart, pQueue->Buffer + pQueue->head, 1);
  25. }
  26. #endif // PYJ.2019.06.20_END --
  27. void PutDataToUartQueue(UART_HandleTypeDef *huart, uint8_t data)
  28. {
  29. pUARTQUEUE pQueue = (huart->Instance == USART1 ? &TerminalQueue:&UbxQueue);
  30. if (pQueue->data >= QUEUE_BUFFER_LENGTH)
  31. GetDataFromUartQueue(huart);
  32. pQueue->Buffer[pQueue->head++] = data;
  33. if (pQueue->head == QUEUE_BUFFER_LENGTH) pQueue->head = 0;
  34. pQueue->data++;
  35. }
  36. void GetDataFromUartQueue(UART_HandleTypeDef *huart)
  37. {
  38. // UART_HandleTypeDef *dst = (huart->Instance == USART1 ? &hTpb22:&hTerminal);
  39. // pUARTQUEUE pQueue = (huart->Instance == USART6 ? &TerminalQueue:&UbxQueue);
  40. pUARTQUEUE pQueue = (huart->Instance == USART1 ? &TerminalQueue:&UbxQueue);
  41. if(huart->Instance == USART1)
  42. {
  43. printf("%c",*(pQueue->Buffer + pQueue->tail));
  44. // printf("%c",*(pQueue->Buffer + pQueue->tail));
  45. } else{
  46. // for(uint8_t i = 0; i < 4; i++)
  47. // HAL_UART_Transmit(&hTerminal, buf[i], 1, 3000);
  48. // HAL_UART_Transmit(&hTerminal, pQueue->Buffer + pQueue->tail, 1, 3000);
  49. // printf("%c",*(pQueue->Buffer + pQueue->tail));
  50. // printf("%c",*(pQueue->Buffer + pQueue->tail));
  51. }
  52. pQueue->tail++;
  53. if (pQueue->tail >= QUEUE_BUFFER_LENGTH) pQueue->tail = 0;
  54. pQueue->data--;
  55. // if(pQueue->data == 0){
  56. // if(huart->Instance == USART1)
  57. // printf("Usart1\r\n");
  58. // else
  59. // printf("Usart6\r\n");
  60. // }
  61. HAL_Delay(1);
  62. }