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