Image
Image

实际测量不符

+ 关注

粉丝 1     |     主题 48     |     回帖 605

STM32CubeMX | Modbus RTU 主机协议栈实现
2024-9-20 08:50
  • ST MCU
  • 88
  • 5512
  结构体中的函数实现如下: #ifdef USE_RTOS static void mutex_lock(void) { } static void mutex_unloc ...  
  注意:如果使用了实时系统,需要实现lock和unlock函数。  
  首先定义一个modbus主机的全局控制结构并初始化: MBRTUMaterTypeDef MBRTUHandle = { .delayms ...  
  其中,mbrtu_master.h和mbrtu_master.c是协议栈实现,无需动,mbrtu_master_example.c是移植参考示例。 下 ...  
  4、移植主机协议栈 主机协议栈源码就只有三个文件:  
  ......  
  最后输出工程就可以了:  
  开启定时器和串口中断,注意:串口的中断要比定时器中断等级高:  
  ......  
  配置用于检测3.5个字符超时时间的定时器,我配置成了5ms超时。 这里需要跟你实际使用的波特率进行超时时间 ...  
  ......  
  配置串口1用于调试打印,配置串口3用于modbus主机通信:  
  3、移植前的基础工程生成 基础工程这里我使用STM32CubeMX生成,使用的是STM32F103C8单片机,配置步骤如下, ...  
  2.2 主机写多个寄存器(CMD16)  
  2.2 主机写多个线圈(CMD15)  
  2.2 主机写单个寄存器(CMD6)  
  2.2 主机写单个线圈(CMD5)  
  2.2 主机读输入寄存器(CMD4) /** * 主机读取输入寄存器 * @param ucSlaveAddress 从机地址 * @param ...  
  2.2 主机读保持寄存器(CMD3) /** * 主机读取保持寄存器 * @param ucSlaveAddress 从机地址 * @param ...  
  2.2 主机读离散量输入(CMD2) /** * 主机读取离散量输入 * @param ucSlaveAddress 从机地址 * @param ...  
2
3
近期访客