55 lines
929 B
C
55 lines
929 B
C
#ifndef MODBUS_H
|
|
#define MODBUS_H
|
|
|
|
#include "stm32f1xx_hal.h"
|
|
|
|
// callback function definition
|
|
typedef void (*ModbusCallback)(uint8_t slave, uint16_t addr, uint8_t *data);
|
|
|
|
typedef struct callback_node{
|
|
uint8_t slave;
|
|
uint16_t addr;
|
|
ModbusCallback callback;
|
|
struct callback_node *next;
|
|
}CallbackNode;
|
|
|
|
|
|
|
|
typedef struct modbus_task_node{
|
|
uint8_t task_id;
|
|
uint8_t slave_addr;
|
|
uint8_t func_code;
|
|
uint16_t reg_addr;
|
|
uint16_t reg_count;
|
|
uint16_t interval;
|
|
uint32_t last_task_time;
|
|
struct modbus_task_node *next;
|
|
}modbus_task;
|
|
|
|
typedef struct {
|
|
uint8_t slave;
|
|
uint16_t reg_addr;
|
|
uint8_t *target;
|
|
}AlignTable;
|
|
|
|
uint8_t is_ready1;
|
|
uint8_t is_ready2;
|
|
uint8_t is_ready3;
|
|
uint8_t bitmap1[5];
|
|
uint8_t bitmap2[5];
|
|
uint8_t bitmap3[5];
|
|
|
|
AlignTable table[] = {
|
|
{1,1000,&is_ready1},
|
|
{1,2000,bitmap1},
|
|
{2,1000,&is_ready2},
|
|
{2,2000,bitmap2},
|
|
{3,1000,&is_ready3},
|
|
{3,2000,bitmap3},
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif |