/* * modbus.h * * Created on: Jul 3, 2025 * Author: shiyanlei */ #ifndef __MODBUS_SLAVE_H #define __MODBUS_SLAVE_H #include "stm32g4xx_hal.h" /* 定义Modbus相关参数 */ #define MODBUS_SLAVE_ADDRESS 0x34 #define MODBUS_FUNCTION_CODE_03 0x03 #define MODBUS_FUNCTION_CODE_06 0x06 #define MODBUS_FUNCTION_CODE_10 0x10 // 写多个寄存器功能码 #define MODBUS_BUFFER_SIZE 256 #define MODBUS_TIMEOUT_MS 2 #define MODBUS_CRC_OFF 0 //==1关闭CRC校验 /* 定义寄存器相关参数 */ #define REGISTER_START_ADDRESS 0x0000 //#define REGISTER_COUNT 10 #define REGISTER_COUNT 12 extern uint16_t holdingRegisters[REGISTER_COUNT]; extern uint8_t RS485_1_RX; extern uint8_t RS485_1_Host_Existed; #define registerWritable_0 1 #define registerWritable_1 1 #define registerWritable_2 1 #define registerWritable_3 1 #define registerWritable_4 1 #define registerWritable_5 1 #define registerWritable_6 1 #define registerWritable_7 1 #define registerWritable_8 1 #define registerWritable_9 1 #define registerWritable_10 1 #define registerWritable_11 1 //holdingRegisters[0]= motor_cmd //0:stop 1:forward 2:reverse //holdingRegisters[1]= HX711_A_F //int16_t 10g //holdingRegisters[2]= HX711_K //uint16_t //holdingRegisters[3]= HX711_D //int16_t 1g //holdingRegisters[4]= HX711_B_F //int16_t 10g extern void MB_WriteHoldingReg(uint8_t _addr, uint16_t _reg, uint16_t _data); /* 初始化Modbus从机 */ void Modbus_Init(void); /* 处理Modbus消息 */ void Modbus_Process(void); #endif /* __MODBUS_SLAVE_H */