nrf_usr_uart.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef NRF_USR_UART_H
  2. #define NRF_USR_UART_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "define.h"
  7. #include "nrf_gpio.h"
  8. #include "nrf_uart.h"
  9. #include "app_uart.h"
  10. #define UART_TX_BUF_SIZE USER_UART_SEND_LEN //串口发送缓存大小(字节数)
  11. #define UART_RX_BUF_SIZE 1 //串口接收缓存大小(字节数)
  12. #ifdef MODUBS_USED
  13. typedef void (*modbus_rec_func)(uint8_t *data,uint8_t *len,bool *stat);
  14. #endif
  15. #ifdef UART_STR_USED
  16. typedef void (*uart_rec_func)(char *data);
  17. #endif
  18. #ifdef UART_HEX_USED
  19. typedef void (*hex_rec_func)(void);
  20. typedef void (*single_hex_rec_func)(uint8_t data);
  21. #endif
  22. typedef enum{
  23. UART_STR,
  24. UART_MODBUS,
  25. UART_HEX,
  26. UART_TERMINAL,
  27. }uart_work_stat;
  28. typedef struct{
  29. bool uart_init_stat;
  30. uart_work_stat uart_work;
  31. #ifdef MODUBS_USED
  32. uint8_t recv_modbus_size;
  33. uint8_t *modbus_receive;
  34. uint8_t modbus_len;
  35. bool modbus_rec;
  36. modbus_rec_func m_modbus_rec_func;
  37. #endif
  38. #ifdef UART_STR_USED
  39. bool uart_rx_stat; //uart接收完成标志
  40. char uart_re_Byte[USER_UART_REBYTE_LEN]; //模块返回信息存储
  41. char uart_tx_Byte[USER_UART_SEND_LEN]; //模块返回信息存储
  42. uint16_t uart_re_addr_count; //存储位置计数
  43. char *uart_re_addr; //当前保存的位置
  44. char *uart_re_addr_begin; //当前区域的首地址
  45. char *uart_re_array[10]; //存放的内存地址位置
  46. uint8_t uart_re_count_array[10]; //存放的数据数量
  47. uint8_t uart_re_point; //当前存放内存数组位置
  48. uart_rec_func m_uart_rec_func;
  49. #endif
  50. #ifdef UART_HEX_USED
  51. uint8_t *hex_receive;
  52. bool hex_pro; //false:接收固定长度数据后处理,true:实时处理
  53. uint8_t hex_len;
  54. uint8_t hex_size;
  55. bool hex_rec;
  56. hex_rec_func m_hex_rec_func;
  57. single_hex_rec_func m_single_hex_rec_func;
  58. #endif
  59. }user_uart_s;
  60. typedef enum
  61. {
  62. USER_UART_QUEUE_TIME = 0,
  63. USER_UART_QUEUE_INT = 1,
  64. }USER_UART_QUEUE_TYPE;
  65. void uart_open(void);
  66. void uart_close(void);
  67. void UartSendString(char *pBuffer);
  68. void UartSendHex(uint8_t *hex,uint16_t len,bool space);
  69. void UartSendData(uint8_t *ch,uint16_t len);
  70. void set_uart_pin(uint32_t tx,uint32_t rx);
  71. void Set_User_Uart_Queue(USER_UART_QUEUE_TYPE type);
  72. #ifdef MODUBS_USED
  73. void Modbus_Set_Init(uint8_t size);
  74. void Modbus_Data_Init(void);
  75. void set_modbus_rec_func(modbus_rec_func func);
  76. #endif
  77. #ifdef UART_STR_USED
  78. void Uart_Set_Init(void);
  79. void Uart_ReData_Pro(void);
  80. void set_string_rec_func(uart_rec_func func);
  81. void set_terminal_rec_func(uart_rec_func func);
  82. #endif
  83. #ifdef UART_HEX_USED
  84. void Hex_Set_Init(uint8_t *buffer,uint8_t size);
  85. void set_hex_rec_func(hex_rec_func func);
  86. void set_single_hex_rec_func(single_hex_rec_func func);
  87. #endif
  88. extern user_uart_s usr_uart;
  89. #ifdef __cplusplus
  90. }
  91. #endif
  92. #endif // NRF_USR_UART_H