zoukankan      html  css  js  c++  java
  • FreeModbus for stm32(Keil工程)——精简Modbus slave协议【worlsing笔记】

    FreeModbus For stm32:点击下载源码

    1、测试环境Keil MDK 4.7a  stm32f103c8, PB12为输出线圈,
       可以通过Modbus Poll来控制线圈的输出状态。

    2、通过ModbusProt.h配置硬件、数据缓冲区大小和功能码配置

    3、移植要点为Port.c和Port.h

       定时器操作在stm32平台下基本不用改
       a、定时器初始化;   xMBPortTimersInit()
       b、开定时器及中断; vMBPortTimersEnable()
       c、关定时器及中断; vMBPortTimersDisable()
       d、定时器溢出中断服务程序;TIME_IQR_HANDLER()
       串口操作:
       a、串初始化;   xMBPortSerialInit()
       b、串口发送中断、接收中断; UART_IQR_HANDLER()
       c、串口收发控制; vMBPortSerialEnable()
       开关量操作 CPU硬件寄存器类型指针定义,用于定义IO输入和输出,
       注意在此定义的IO必须初始化为输入或输出。
       typedef volatile uint32_t * CPURegistertype;
        //线圈状态, 存储格式:&IO输出口寄存器, 引脚号
        MBCoilType MBCoils[REG_COILS_SIZE] = {
            &(GPIOB->ODR), 12, //PB12做为输出线圈
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
        };

        //离散开关输入状态, 存储格式:&IO输出口寄存器, 引脚号
        MBDiscreteType MBDiscretes[REG_DISCRETE_SIZE] = {
            &(GPIOB->ODR), 12, //PB12做为离散输入
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
            &(GPIOB->ODR), 12,
        };

    image
             Mail: worldsing@foxmail.com
              QQ: 237539049

  • 相关阅读:
    Java菜鸟之java基础语法,运算符(三)
    Lotus迁移到Exchange 2010 POC 之Domino Server的配置!
    hibernate:对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决办法
    【targeting学习笔记】Display Advertising Targeting
    Domino 迁移到Exchange 之 Domino Admin 安装!
    sqlite3使用详解(Qt版本)
    .net反混淆脱壳工具de4dot的使用
    破解NET的四大神器(转)
    C#让应用程序只运行一个实例的几种方法
    Windows server 2008 R2实现多用户远程连接
  • 原文地址:https://www.cnblogs.com/worldsing/p/3441704.html
Copyright © 2011-2022 走看看