找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10472|回復(fù): 17
收起左側(cè)

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

  [復(fù)制鏈接]
ID:527588 發(fā)表于 2020-11-14 17:02 | 顯示全部樓層 |閱讀模式
Modbus-Master-Slave-STM32-HAL-FreeRTOS
源代碼來(lái)自https://github.com/alejoseb/Modbus-STM32-HAL-FreeRTOS,支持多實(shí)例,可以同時(shí)使用MasterSlave,原作者使用CubeIDE工程,用不太習(xí)慣,我這里做點(diǎn)小修改使用MDK工程,代碼初始化由CubeMX生成,簡(jiǎn)直不要太方便,可以無(wú)痛移植到其他STM芯片。
基本設(shè)置
1設(shè)置時(shí)鐘.png


2調(diào)試方式.png

2IO.png

啟用Freertos,添加任務(wù)
3新建M任務(wù).png

4新建Slave任務(wù).png

設(shè)置中斷優(yōu)先級(jí)
4中斷優(yōu)先級(jí).png

設(shè)置長(zhǎng)生成MDK工程
5生成MDK工程.png


工程里面添加Modbus庫(kù)
6新建文件夾并添加文件.png

7添加目錄.png


修改main.c
8main引入.png


9main添加代碼.png


修改freertos.c
10freertos引入.png


11freertos代碼M.png


12freertos代碼S.png


13Modbus修改.png

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

15完美運(yùn)行.png


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

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

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

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:108573 發(fā)表于 2020-11-19 08:21 | 顯示全部樓層
不錯(cuò),多一些這樣的工程代碼
回復(fù)

使用道具 舉報(bào)

ID:850176 發(fā)表于 2020-11-27 13:51 | 顯示全部樓層
謝謝,正需要這方面的資料學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:284784 發(fā)表于 2021-5-6 12:01 | 顯示全部樓層
下載的文件顯示壓縮包只能用winrar打開(kāi) 大家注意下
回復(fù)

使用道具 舉報(bào)

ID:969378 發(fā)表于 2021-9-30 22:41 | 顯示全部樓層
我用stm32ve 編譯出錯(cuò)通不過(guò),錯(cuò)誤指向  Mobdbus103.sct    *.o (RESET, +First)  請(qǐng)指教
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2021-9-30 22:53 | 顯示全部樓層
sjb384321 發(fā)表于 2021-9-30 22:41
我用stm32ve 編譯出錯(cuò)通不過(guò),錯(cuò)誤指向  Mobdbus103.sct    *.o (RESET, +First)  請(qǐng)指教

這是用Keil5編譯的結(jié)果
51hei.png
回復(fù)

使用道具 舉報(bào)

ID:969378 發(fā)表于 2021-10-1 07:24 | 顯示全部樓層
我用單片機(jī)485連接觸摸屏,請(qǐng)教讀寫地址在哪里修改
回復(fù)

使用道具 舉報(bào)

ID:969378 發(fā)表于 2021-10-1 19:48 | 顯示全部樓層
一共有3個(gè)串口,485用了哪一個(gè)串口
回復(fù)

使用道具 舉報(bào)

ID:138205 發(fā)表于 2022-1-26 21:43 | 顯示全部樓層
多學(xué)習(xí)吧,這個(gè)例子看著好像不錯(cuò)呀
回復(fù)

使用道具 舉報(bào)

ID:475916 發(fā)表于 2022-2-10 14:22 | 顯示全部樓層
主機(jī)讀到的數(shù)據(jù)在哪里處理?
回復(fù)

使用道具 舉報(bào)

ID:570410 發(fā)表于 2022-9-17 16:25 | 顯示全部樓層
樓主,程序中3個(gè)串口可以同時(shí)啟用嗎?比如2個(gè)做slave,1個(gè)做master(1個(gè)做slave,2個(gè)做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);
編譯通過(guò),但實(shí)際不能正常執(zhí)行。
回復(fù)

使用道具 舉報(bào)

ID:570410 發(fā)表于 2022-9-17 16:26 | 顯示全部樓層
樓主,程序中3個(gè)串口可以同時(shí)啟用嗎?比如2個(gè)做slave,1個(gè)做master(1個(gè)做slave,2個(gè)做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);
編譯通過(guò),但實(shí)際不能正常執(zhí)行。
回復(fù)

使用道具 舉報(bào)

ID:29048 發(fā)表于 2023-1-1 14:59 | 顯示全部樓層

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

使用道具 舉報(bào)

ID:363007 發(fā)表于 2023-5-10 10:02 | 顯示全部樓層
不錯(cuò),對(duì)我有很大的幫助,感謝
回復(fù)

使用道具 舉報(bào)

ID:363007 發(fā)表于 2023-5-10 10:03 | 顯示全部樓層
不錯(cuò),正在了解modbus協(xié)議,感謝
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:354641 發(fā)表于 2024-6-6 07:36 | 顯示全部樓層
多謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:232462 發(fā)表于 2024-11-7 14:50 | 顯示全部樓層
不像是freetros例程,怎么有while大循環(huán)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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