nrf_usr_uart.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. typedef void (*modbus_rec_func)(uint8_t *data,uint8_t *len,bool *stat);
  13. typedef void (*uart_rec_func)(char *data);
  14. typedef void (*hex_rec_func)(void);
  15. typedef void (*single_hex_rec_func)(uint8_t data);
  16. typedef enum{
  17. UART_STR,
  18. UART_MODBUS,
  19. UART_HEX,
  20. UART_TERMINAL,
  21. }uart_work_stat;
  22. typedef struct{
  23. bool uart_init_stat;
  24. uart_work_stat uart_work;
  25. bool uart_rx_stat; //uart接收完成标志
  26. char uart_re_Byte[USER_UART_REBYTE_LEN]; //模块返回信息存储
  27. char uart_tx_Byte[USER_UART_SEND_LEN]; //模块返回信息存储
  28. uint16_t uart_re_addr_count; //存储位置计数
  29. char *uart_re_addr; //当前保存的位置
  30. char *uart_re_addr_begin; //当前区域的首地址
  31. char *uart_re_array[10]; //存放的内存地址位置
  32. uint8_t uart_re_count_array[10]; //存放的数据数量
  33. uint8_t uart_re_point; //当前存放内存数组位置
  34. uart_rec_func m_uart_rec_func;
  35. uint8_t modbus_receive[MODBUS_REC_LEN];
  36. uint8_t modbus_len;
  37. bool modbus_rec;
  38. modbus_rec_func m_modbus_rec_func;
  39. uint8_t *hex_receive;
  40. bool hex_pro; //false:接收固定长度数据后处理,true:实时处理
  41. uint8_t hex_len;
  42. uint8_t hex_size;
  43. bool hex_rec;
  44. hex_rec_func m_hex_rec_func;
  45. single_hex_rec_func m_single_hex_rec_func;
  46. }user_uart_s;
  47. typedef enum
  48. {
  49. USER_UART_QUEUE_TIME=0,
  50. USER_UART_QUEUE_INT=1,
  51. }USER_UART_QUEUE_TYPE;
  52. void uart_open_9600(void);
  53. void uart_open(void);
  54. void uart_close(void);
  55. void UartSendString(char *pBuffer);
  56. void UartSendHex(uint8_t *hex,uint16_t len,bool space);
  57. void UartSendData(uint8_t *ch,uint16_t len);
  58. void Modbus_Set_Init(void);
  59. void Uart_Set_Init(void);
  60. void Uart_ReData_Pro(void);
  61. void Hex_Set_Init(uint8_t *buffer,uint8_t size);
  62. void set_uart_pin(uint32_t tx,uint32_t rx);
  63. void set_hex_rec_func(hex_rec_func func);
  64. void set_single_hex_rec_func(single_hex_rec_func func);
  65. void set_string_rec_func(uart_rec_func func);
  66. void set_terminal_rec_func(uart_rec_func func);
  67. void Set_User_Uart_Queue(USER_UART_QUEUE_TYPE type);
  68. extern user_uart_s usr_uart;
  69. #ifdef __cplusplus
  70. }
  71. #endif
  72. #endif // NRF_USR_UART_H