#ifndef __MODBUS_REC_SEND_H #define __MODBUS_REC_SEND_H #include "stm32f4xx.h" #include "modbus_parse.h" typedef enum ModbusRxStateType { MODBUS_RX_RECEIVING = 0, /*正在正常接收*/ MODBUS_RX_CHECK_T15, /*等待第一次DMA检查,判断新字符是否在t1.5前开始*/ MODBUS_RX_CHECK_T35, /*等待第二次DMA检查,判断t1.5~t3.5是否出现字符*/ MODBUS_RX_DISCARD, /*当前帧已经确认错误,继续丢弃后续数据*/ MODBUS_RX_DISCARD_CHECK_T35 /*已收到错误帧的IDLE,等待连续t3.5静默*/ }MODBUS_RX_STATE; int8_t ChcekCrc16(uint16_t recCrc16, uint8_t *data, uint16_t length); void AddCrc16(uint8_t *data, uint16_t length); void ModbusSend(uint8_t *txBuf, uint16_t len); void TimOff(void); void TimRestart(uint32_t timArr); void ModbusParseWakeUp(void); void ModbusDmaRestart(void); #endif