agm_uart.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #ifndef _AGM_UART_H_
  2. #define _AGM_UART_H_
  3. #include "board.h"
  4. #include "timeout.h"
  5. /*端口号*/
  6. enum {
  7. UART0_ID = 0,
  8. UART1_ID = 1,
  9. UART2_ID = 2,
  10. UART_DEBUG = UART0_ID,
  11. UART_4G = UART1_ID,
  12. UART_485 = UART2_ID,
  13. UART_MAX = 3
  14. };
  15. #define RS485_RX() GPIO_SetLow(GPIO1, GPIO_BIT2)
  16. #define RS485_TX() GPIO_SetHigh(GPIO1, GPIO_BIT2)
  17. #define UART_RCV_TEMPBUF_LEN 1024
  18. #define UART_RCV_TIMEOUT (10) //串口接收超时时间,单位ms
  19. #define UART_RCV_TIMEOUT_T (2*1000)
  20. typedef struct _uart_rcv_temp
  21. {
  22. uint16_t p_input;
  23. uint16_t p_output;
  24. uint8_t rcv_buf[UART_RCV_TEMPBUF_LEN];
  25. }__attribute__((packed)) uart_rcv_temp_t;
  26. //串口接收
  27. typedef struct _uart_info
  28. {
  29. uart_rcv_temp_t p_rcv;
  30. uart_rcv_temp_t p_temp;
  31. uint8_t rcv_over;
  32. timeout_t tt_uart;
  33. uint32_t t_time;
  34. }__attribute__((packed)) uart_info_t;
  35. extern uart_info_t uart_info[UART_MAX];
  36. extern void data_dump(const char *name, uint8_t *data, uint16_t length);
  37. extern void Uart0_Init(uint32_t baud);
  38. extern void Uart2_Init(uint32_t baud);
  39. extern int uart_msg_send(uint8_t uartid, const char *buf, uint32_t buflen);
  40. extern uint16_t uart_blocking_read(uint8_t *buf, uint8_t uart);
  41. extern void uart_rcv_handle(void);
  42. #endif