jiecang 推杆小板代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

43 lines
1.2 KiB

/*
* modbus.h
*
* Created on: Jul 3, 2025
* Author: shiyanlei
*/
#ifndef __MODBUS_SLAVE_H
#define __MODBUS_SLAVE_H
#include "stm32g0xx_hal.h"
/* 定义Modbus相关参数 */
#define MODBUS_SLAVE_ADDRESS 0x42
#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 5
#define MODBUS_CRC_OFF 0 //==1关闭CRC校验
/* 定义寄存器相关参数 */
#define REGISTER_START_ADDRESS 0x0000
#define REGISTER_COUNT 10
extern uint8_t modbusBuffer[MODBUS_BUFFER_SIZE];
//extern uint16_t holdingRegisters[REGISTER_COUNT];
extern int16_t holdingRegisters[REGISTER_COUNT];
#define registerWritable_0 1 //IO_1
#define registerWritable_1 1 //IO_2
#define registerWritable_2 0 //Encoder
#define registerWritable_3 1 //PWM 1-99
#define registerWritable_4 0 //Current mA
#define registerWritable_5 1 //Zero Encoder
#define registerWritable_6 1 //Auto Position Enable
#define registerWritable_7 1 //Auto Position Target
#define registerWritable_8 0
#define registerWritable_9 1 //Auto Position Tolerance
/* 初始化Modbus从机 */
void Modbus_Init(void);
/* 处理Modbus消息 */
void Modbus_Process(void);
#endif /* __MODBUS_SLAVE_H */