#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 //串口接收缓存大小(字节数) typedef void (*modbus_rec_func)(uint8_t *data,uint8_t *len,bool *stat); typedef void (*uart_rec_func)(char *data); typedef void (*hex_rec_func)(void); typedef void (*single_hex_rec_func)(uint8_t data); typedef enum{ UART_STR, UART_MODBUS, UART_HEX, UART_TERMINAL, }uart_work_stat; typedef struct{ bool uart_init_stat; uart_work_stat uart_work; 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; uint8_t modbus_receive[MODBUS_REC_LEN]; uint8_t modbus_len; bool modbus_rec; modbus_rec_func m_modbus_rec_func; 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; }user_uart_s; typedef enum { USER_UART_QUEUE_TIME=0, USER_UART_QUEUE_INT=1, }USER_UART_QUEUE_TYPE; void uart_open_9600(void); 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 Modbus_Set_Init(void); void Uart_Set_Init(void); void Uart_ReData_Pro(void); void Hex_Set_Init(uint8_t *buffer,uint8_t size); void set_uart_pin(uint32_t tx,uint32_t rx); void set_hex_rec_func(hex_rec_func func); void set_single_hex_rec_func(single_hex_rec_func func); void set_string_rec_func(uart_rec_func func); void set_terminal_rec_func(uart_rec_func func); void Set_User_Uart_Queue(USER_UART_QUEUE_TYPE type); extern user_uart_s usr_uart; #ifdef __cplusplus } #endif #endif // NRF_USR_UART_H