找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10133|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

STM32 Modbus主從站實(shí)例程序-FreeRTOS

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:527588 發(fā)表于 2020-11-14 17:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
Modbus-Master-Slave-STM32-HAL-FreeRTOS
源代碼來自https://github.com/alejoseb/Modbus-STM32-HAL-FreeRTOS,支持多實(shí)例,可以同時使用MasterSlave,原作者使用CubeIDE工程,用不太習(xí)慣,我這里做點(diǎn)小修改使用MDK工程,代碼初始化由CubeMX生成,簡直不要太方便,可以無痛移植到其他STM芯片。
基本設(shè)置







啟用Freertos,添加任務(wù)




設(shè)置中斷優(yōu)先級


設(shè)置長生成MDK工程



工程里面添加Modbus庫





修改main.c






修改freertos.c











編譯下載到單片機(jī),完美運(yùn)行





移植過程非常簡單,使用其他型號的芯片只要對應(yīng)設(shè)置即可
附上stm32f070和stm32f103的實(shí)例
Modbus103_MDK.rar (873.64 KB, 下載次數(shù): 354)

ModbusF070_MDK.rar (878.89 KB, 下載次數(shù): 134)

不過這個主站發(fā)送指令顯示有點(diǎn)繁瑣,另附上一個同樣是在Github挖回來的Modbus庫
ModBus-庫.rar (10.9 KB, 下載次數(shù): 240)

這個同樣支持主從站多實(shí)例,里面有中文注釋,希望有興趣的朋友移植一下并放出來方便一下大家.

評分

參與人數(shù) 2黑幣 +60 收起 理由
IdeaMing + 10 很給力!版主給的獎勵不夠!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏27 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:108573 發(fā)表于 2020-11-19 08:21 | 只看該作者
不錯,多一些這樣的工程代碼
回復(fù)

使用道具 舉報

板凳
ID:850176 發(fā)表于 2020-11-27 13:51 | 只看該作者
謝謝,正需要這方面的資料學(xué)習(xí)下
回復(fù)

使用道具 舉報

地板
ID:284784 發(fā)表于 2021-5-6 12:01 | 只看該作者
下載的文件顯示壓縮包只能用winrar打開 大家注意下
回復(fù)

使用道具 舉報

5#
ID:969378 發(fā)表于 2021-9-30 22:41 | 只看該作者
我用stm32ve 編譯出錯通不過,錯誤指向  Mobdbus103.sct    *.o (RESET, +First)  請指教
回復(fù)

使用道具 舉報

6#
ID:262 發(fā)表于 2021-9-30 22:53 | 只看該作者
sjb384321 發(fā)表于 2021-9-30 22:41
我用stm32ve 編譯出錯通不過,錯誤指向  Mobdbus103.sct    *.o (RESET, +First)  請指教

這是用Keil5編譯的結(jié)果

51hei.png (49.73 KB, 下載次數(shù): 138)

51hei.png
回復(fù)

使用道具 舉報

7#
ID:969378 發(fā)表于 2021-10-1 07:24 | 只看該作者
我用單片機(jī)485連接觸摸屏,請教讀寫地址在哪里修改
回復(fù)

使用道具 舉報

8#
ID:969378 發(fā)表于 2021-10-1 19:48 | 只看該作者
一共有3個串口,485用了哪一個串口
回復(fù)

使用道具 舉報

9#
ID:138205 發(fā)表于 2022-1-26 21:43 | 只看該作者
多學(xué)習(xí)吧,這個例子看著好像不錯呀
回復(fù)

使用道具 舉報

10#
ID:475916 發(fā)表于 2022-2-10 14:22 | 只看該作者
主機(jī)讀到的數(shù)據(jù)在哪里處理?
回復(fù)

使用道具 舉報

11#
ID:570410 發(fā)表于 2022-9-17 16:25 | 只看該作者
樓主,程序中3個串口可以同時啟用嗎?比如2個做slave,1個做master(1個做slave,2個做master)?
添加了:
ModbusH3.uiModbusType = SLAVE_RTU;
  ModbusH3.port =  &huart3;
  ModbusH3.u8id = 3;                
  ModbusH3.u16timeOut = 1000;
  ModbusH3.EN_Port = NULL;
  //ModbusH2.EN_Port = LD2_GPIO_Port;
  //ModbusH2.EN_Pin = LD2_Pin;
  ModbusH3.u32overTime = 0;
  ModbusH3.au16regs = ModbusDATA3;
  ModbusH3.u16regsize= sizeof(ModbusDATA3)/sizeof(ModbusDATA3[0]);
  //Initialize Modbus library
  ModbusInit(&ModbusH3);
  //Start capturing traffic on serial Port
  ModbusStart(&ModbusH3);
編譯通過,但實(shí)際不能正常執(zhí)行。
回復(fù)

使用道具 舉報

12#
ID:570410 發(fā)表于 2022-9-17 16:26 | 只看該作者
樓主,程序中3個串口可以同時啟用嗎?比如2個做slave,1個做master(1個做slave,2個做master)?
添加了:
ModbusH3.uiModbusType = SLAVE_RTU;
  ModbusH3.port =  &huart3;
  ModbusH3.u8id = 3;                
  ModbusH3.u16timeOut = 1000;
  ModbusH3.EN_Port = NULL;
  //ModbusH2.EN_Port = LD2_GPIO_Port;
  //ModbusH2.EN_Pin = LD2_Pin;
  ModbusH3.u32overTime = 0;
  ModbusH3.au16regs = ModbusDATA3;
  ModbusH3.u16regsize= sizeof(ModbusDATA3)/sizeof(ModbusDATA3[0]);
  //Initialize Modbus library
  ModbusInit(&ModbusH3);
  //Start capturing traffic on serial Port
  ModbusStart(&ModbusH3);
編譯通過,但實(shí)際不能正常執(zhí)行。
回復(fù)

使用道具 舉報

13#
ID:29048 發(fā)表于 2023-1-1 14:59 | 只看該作者

謝謝,正學(xué)習(xí)freeRTOS
回復(fù)

使用道具 舉報

14#
ID:363007 發(fā)表于 2023-5-10 10:02 | 只看該作者
不錯,對我有很大的幫助,感謝
回復(fù)

使用道具 舉報

15#
ID:363007 發(fā)表于 2023-5-10 10:03 | 只看該作者
不錯,正在了解modbus協(xié)議,感謝
回復(fù)

使用道具 舉報

16#
ID:1089198 發(fā)表于 2023-7-24 11:33 | 只看該作者
樓主,程序中從機(jī)的任務(wù)是只開啟串口的接收使能嗎?數(shù)據(jù)發(fā)送給主機(jī)的過程在哪體現(xiàn)的呢?這里有點(diǎn)沒明白。
回復(fù)

使用道具 舉報

17#
ID:354641 發(fā)表于 2024-6-6 07:36 | 只看該作者
多謝樓主分享
回復(fù)

使用道具 舉報

18#
ID:232462 發(fā)表于 2024-11-7 14:50 | 只看該作者
不像是freetros例程,怎么有while大循環(huán)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表