123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #ifndef NRF_USR_UART_H
- #define NRF_USR_UART_H
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #include "define.h"
- #include "nrf_gpio.h"
- #include "nrf_uart.h"
- #include "app_uart.h"
- #define UART_TX_BUF_SIZE USER_UART_SEND_LEN //串口发送缓存大小(字节数)
- #define UART_RX_BUF_SIZE 1 //串口接收缓存大小(字节数)
- #ifdef MODUBS_USED
- typedef void (*modbus_rec_func)(uint8_t *data,uint8_t *len,bool *stat);
- #endif
- #ifdef UART_STR_USED
- typedef void (*uart_rec_func)(char *data);
- #endif
- #ifdef UART_HEX_USED
- typedef void (*hex_rec_func)(void);
- typedef void (*single_hex_rec_func)(uint8_t data);
- #endif
-
- typedef enum{
- UART_STR,
- UART_MODBUS,
- UART_HEX,
- UART_TERMINAL,
- }uart_work_stat;
- typedef struct{
- bool uart_init_stat;
- uart_work_stat uart_work;
- #ifdef MODUBS_USED
- uint8_t recv_modbus_size;
- uint8_t *modbus_receive;
- uint8_t modbus_len;
- bool modbus_rec;
- modbus_rec_func m_modbus_rec_func;
- #endif
- #ifdef UART_STR_USED
- bool uart_rx_stat; //uart接收完成标志
- char uart_re_Byte[USER_UART_REBYTE_LEN]; //模块返回信息存储
- char uart_tx_Byte[USER_UART_SEND_LEN]; //模块返回信息存储
- uint16_t uart_re_addr_count; //存储位置计数
- char *uart_re_addr; //当前保存的位置
- char *uart_re_addr_begin; //当前区域的首地址
- char *uart_re_array[10]; //存放的内存地址位置
- uint8_t uart_re_count_array[10]; //存放的数据数量
- uint8_t uart_re_point; //当前存放内存数组位置
- uart_rec_func m_uart_rec_func;
- #endif
- #ifdef UART_HEX_USED
- uint8_t *hex_receive;
- bool hex_pro; //false:接收固定长度数据后处理,true:实时处理
- uint8_t hex_len;
- uint8_t hex_size;
- bool hex_rec;
- hex_rec_func m_hex_rec_func;
- single_hex_rec_func m_single_hex_rec_func;
- #endif
- }user_uart_s;
-
- typedef enum
- {
- USER_UART_QUEUE_TIME = 0,
- USER_UART_QUEUE_INT = 1,
- }USER_UART_QUEUE_TYPE;
- void uart_open(void);
- void uart_close(void);
- void UartSendString(char *pBuffer);
- void UartSendHex(uint8_t *hex,uint16_t len,bool space);
- void UartSendData(uint8_t *ch,uint16_t len);
- void set_uart_pin(uint32_t tx,uint32_t rx);
- void Set_User_Uart_Queue(USER_UART_QUEUE_TYPE type);
- #ifdef MODUBS_USED
- void Modbus_Set_Init(uint8_t size);
- void Modbus_Data_Init(void);
- void set_modbus_rec_func(modbus_rec_func func);
- #endif
- #ifdef UART_STR_USED
- void Uart_Set_Init(void);
- void Uart_ReData_Pro(void);
- void set_string_rec_func(uart_rec_func func);
- void set_terminal_rec_func(uart_rec_func func);
- #endif
- #ifdef UART_HEX_USED
- void Hex_Set_Init(uint8_t *buffer,uint8_t size);
- void set_hex_rec_func(hex_rec_func func);
- void set_single_hex_rec_func(single_hex_rec_func func);
- #endif
- extern user_uart_s usr_uart;
-
- #ifdef __cplusplus
- }
- #endif
- #endif // NRF_USR_UART_H
|