#include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/uart.h" #include "driver/gpio.h" #include "sdkconfig.h" #include "esp_log.h" /* UART */ /* UART1 RT-2 TX-1*/ /* UART2 RT-46 TX-45*/ #define ECHO_TEST_TXD2 (45) #define ECHO_TEST_RXD2 (46) #define ECHO_UART_PORT_NUM2 (UART_NUM_2) #define ECHO_TEST_TXD1 (1) #define ECHO_TEST_RXD1 (2) #define ECHO_UART_PORT_NUM1 (UART_NUM_1) #define ECHO_TEST_RTS (UART_PIN_NO_CHANGE) #define ECHO_TEST_CTS (UART_PIN_NO_CHANGE) #define ECHO_UART_BAUD_RATE (9600) #define ECHO_TASK_STACK_SIZE (16*1024) /*选择采用小端序还是大端序 Modbus-RTU通讯采用的是小端序*/ #define BIG_ENDIAN_USED 0 #define LITTLE_ENDIAN_USED !BIG_ENDIAN_USED /*数字流量计地址*/ #define FLUX_ADDR 0x01 #define FLUX_FUNC_READ 0x03 #define FLUX_FUNC_SET 0x16 /*Modbus-RTU帧格式 */ /*湿式流量计所有数据均为两个字节*/ /* ADDR : 1byte FUNC : 1byte DATA : 2byte CRC : 2byte */ struct ModbusRTU_Frame { unsigned char ADDR; unsigned char FUNC; unsigned char DATA[2]; unsigned char CRC[2]; }; /*串口1响应任务*/ void uart1_echoTask(void); /*串口2响应任务*/ void uart2_echoTask(void); /*CRC16校验*/ unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen);