FreeMODBUS库 实现串口的选择切换
日期 | 作者 | 版本 | 说明 |
---|---|---|---|
2020.12.16 | Hxj | V1.0 | 完成主体 |
2021.01.08 | Hxj | V1.0 | 精简后的版本 |
介绍
在FreeMODBUS 库中是不支持串口在运行的时候进行切换,同时也不支持多串口同时运行,必须得从新的配置才能进行串口的输出的选择。这样就使得程序有他的局限性。下文将会着重介绍如何进行选择性配置串口的输出。
一、FreeMODEBUS的串口配置
源码
头文件
/*
* mb_user.h
*
* Created on: May 24, 2020
* Author: 81001
*/
#ifndef FREEMODBUS_USER_MB_USER_H_
#define FREEMODBUS_USER_MB_USER_H_
#include "mb_user.h"
#include "mb.h"
#include "mbplatform.h"
#include "mb_coilsreg.h"
#include "mb_discretereg.h"
#include "mb_inputreg.h"
#include "mb_holdingreg.h"
#include "gpio_ext.h"
//是否启用FreeModbus模块
#define FREEMODBUS_ENABLE 1
//选择PORT类型是否为RS485模块
#define FREEMODBUS_PORT_INTERFACE_RS485
//#define FREEMODBUS_PORT_INTERFACE_RS232
//设置FreeModbus从机的地址
#define FREEMODBUS_DEV_ADDR 0x01
#define RS485_T_CTRL GPIOE_OUT(15)
#define FREEMODBUS_TIMER 2
extern uint8_t FreeModbus_PortNum;
extern USART_TypeDef *USART_Modbus;
extern uint32_t FreeModbus_PortBaudrate;
extern eMBParity Freemodbus_PortParity;
extern uint8_t DipValue;
extern uint8_t PORT_Switch;
void User_MB_InitPortParam(uint8_t portNum, uint32_t baudRate, eMBParity parity);
void User_MB_Config();
void User_MB_ConfigNVIC();
void User_MB_InitRegs();
void User_MB_RefreshInputRegister();
void User_MB_RefreshCoilsRegister();
void User_MB_RefreshDiscreteRegister();
void User_MB_RefreshHoldingRegister();
#endif /* FREEMODBUS_USER_MB_USER_H_ */
源文件
/*
* mb_user.c
*
* Created on: May 24, 2020
* Author: 81001
*/
#include "mb_user.h"
#include "sensor.h"
#include "user.h"
#include "tc.h"
#include "globalVariate.h"
#include "usart_ext.h"
#include "bldcmotor.h"
uint8_t FreeModbus_PortNum = 3;
USART_TypeDef *USART_Modbus = USART3;
uint32_t FreeModbus_PortBaudrate =<