MSP430WARE++的使用3:modbus模块的调用方法
Posted slgkaifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSP430WARE++的使用3:modbus模块的调用方法相关的知识,希望对你有一定的参考价值。
MSP430WARE++的使用3:modbus模块的调用方法
MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。
本文将介绍modbus模块驱动程序的调用方法。
1、硬件原理图
使用modbus模块驱动程序须要与MSP430单片机的UART0port相连接。
2、用法
2、用法
a、增加驱动程序
选中modbus目录,右键点击“Exclude from Build”就可以。
选中modbus目录,右键点击“Exclude from Build”就可以。
modbus驱动程序由多个个文件组成。例如以下图所看到的。当中RSP1_config.hpp为RSP1的配置文件。RSP1.cpp为RSP1类的源程序,RSP1.hpp为RSP1类的头文件。
b、使能外设
原创性文章。转载请注明出处 http://user.qzone.qq.com/2756567163。
b、使能外设
在config.hpp中使能外设modbus,其源程序例如以下:
#define
PROTOCOL_MODBUS1
c、驱动程序的配置。
能够对下列选项进行设置,解释例如以下:
MODBUS_REG_INPUT_START:输入寄存器起始地址
MODBUS_REG_INPUT_NREGS:输入寄存器个数(双字节)
MODBUS_REG_HOLDING_START:保持寄存器起始地址
MODBUS_REG_HOLDING_NREGS:保持寄存器个数(双字节)
c、驱动程序的配置。
能够对下列选项进行设置,解释例如以下:
MODBUS_REG_INPUT_START:输入寄存器起始地址
MODBUS_REG_INPUT_NREGS:输入寄存器个数(双字节)
MODBUS_REG_HOLDING_START:保持寄存器起始地址
MODBUS_REG_HOLDING_NREGS:保持寄存器个数(双字节)
MODBUS_MODE:模式,能够为MB_RTU(二进制模式)
MB_ASCII(ASCII模式)
MB_TCP(TCP模式)
MODBUS_SLAVE_ID:从地址
MODBUS_BAUD:波特率
MODUBS_PARITY:效验位。能够为MB_PAR_NONE(无效验)
MB_PAR_ODD(奇效验)
MB_PAR_EVEN(偶效验)
MB_ASCII(ASCII模式)
MB_TCP(TCP模式)
MODBUS_SLAVE_ID:从地址
MODBUS_BAUD:波特率
MODUBS_PARITY:效验位。能够为MB_PAR_NONE(无效验)
MB_PAR_ODD(奇效验)
MB_PAR_EVEN(偶效验)
依据项目的实际需求,更改modbus_config.hpp配置文件,其更改后的源程序例如以下:
#define MODBUS_REG_INPUT_START 1
#define MODBUS_REG_INPUT_START 1
#define
MODBUS_REG_INPUT_NREGS (2
* 16)
#define MODBUS_REG_HOLDING_START 1
#define MODBUS_REG_HOLDING_START 1
#define MODBUS_REG_HOLDING_NREGS (2
* 64)
#define MODBUS_MODE MB_RTU
#define MODBUS_MODE MB_RTU
#define MODBUS_SLAVE_ID1
#define MODBUS_BAUD 115200
#define MODUBS_PARITY MB_PAR_NONE
d、类的派生
已在PTL层设置完成,不须要派生。
d、类的派生
已在PTL层设置完成,不须要派生。
e、对象的声明
已在PTL层声明完成,不须要声明。
f、其他操作
modbus模块自身占用了UART0和TIMERA。使用时,应在config.hpp中进行屏蔽,源程序例如以下:
#define INTERNAL_PERIPHERAL_CLOCK_MODE
1
#define INTERNAL_PERIPHERAL_UART0_MODE
0
#define INTERNAL_PERIPHERAL_TIMERA_MODE
0
g、调用方法
在主循环的第1行调用,例如以下语句:
Target.PTL.Modbus.Dispose();
可在主循环的任何位置,改变输入寄存器或者保持寄存器的数值。以备主modbus调用。例子代码例如以下:
while(1)
{
Target.PTL.Modbus.Dispose();
if
(Target.PTL.Modbus.flag == True)
{
Target.PTL.Modbus.flag
= False;
//收到写保持寄存器数据
}
//读保持寄存器
//读输入寄存器
//喂狗
Target.HAL.WatchDog.Feed();
}
uint16 usRegInputStart; 输入寄存器起始地址
3、CModbus类成员变量和成员函数的说明
成员变量:uint16 usRegInputStart; 输入寄存器起始地址
uint16
usRegInputBuf[MODBUS_REG_INPUT_NREGS]; 输入寄存器缓冲Buffer
uint16
usRegHoldingStart; 保持寄存器起始地址
uint16
usRegHoldingBuf[MODBUS_REG_HOLDING_NREGS]; 保持寄存器缓冲Buffer
成员函数
CModbus(void); 构造函数
成员函数
CModbus(void); 构造函数
void Dispose(void);
在主循环的第1行调用
注1:本文中演示样例代码用绿色标注。
注2:本文中与使用密切相关的成员变量与成员函数用红色标注。
原创性文章。转载请注明出处 http://user.qzone.qq.com/2756567163。
以上是关于MSP430WARE++的使用3:modbus模块的调用方法的主要内容,如果未能解决你的问题,请参考以下文章
MSP430 DM430-A开发板学习笔记MSP430f149与hc06蓝牙模块的使用
MSP430 DM430-A开发板学习笔记测速模块(计数传对射感器)的使用