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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM