65 lines
1.4 KiB
C
65 lines
1.4 KiB
C
|
|
#include <stdio.h>
|
|
#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[4];
|
|
unsigned char CRC[2];
|
|
};
|
|
|
|
extern struct ModbusRTU_Frame flux_frame;
|
|
extern struct ModbusRTU_Frame breath_frame;
|
|
|
|
/*串口1响应任务*/
|
|
void uart1_echoTask(void);
|
|
|
|
/*串口2响应任务*/
|
|
void uart2_echoTask(void);
|
|
|
|
/*CRC16校验*/
|
|
unsigned short CRC16(unsigned char* pchMsg, unsigned short wDataLen);
|
|
|
|
|
|
esp_err_t ModbusRTU_Send(uart_port_t uart_num, struct ModbusRTU_Frame *frame); |