stm32-modbus-rs485程序移植過程

?背景?

【modbus學習筆記】Modbus協議解析_modus協議中0.001如何解析-CSDN博客

?【Modbus學習筆記】stm32實現Modbus(從機)并移植_stm32 modbus數據處理-CSDN博客

繼上篇成功移植modbus從機例程之后,我要嘗試移植主機的程序。經提醒,可用野火的modbus代碼。

參考教程:

Modbus參考例程 — 野火產品資料下載中心 文檔https://doc.embedfire.com/products/link/zh/latest/package/modbus.html

支持板子:

例程介紹:

https://doc.embedfire.com/module/module_tutorial/zh/latest/Module_Manual/extend_class/modbus.html#

?其他教程(博主暫時沒看):

up主X西魚X的所有視頻,如:

【FreeRTOS+freemodbus(無BGM)】 https://www.bilibili.com/video/BV1LRUSYFET3/?share_source=copy_web&vd_source=0d3e505cd639f5fd61042ee6c87b2fd6

移植過程

配置

【例程配置】

引腳分配
? ? PA2 ? ? ------> USART2_TX
? ? PA3 ? ? ------> USART2_RX

? ?用定時器4

【我的工程】

引腳分配
? ? PA2 ? ? ------> USART2_TX
? ? PA3 ? ? ------> USART2_RX?

? ? PA1 ? ? ------> CON(485方向控制引腳)

? ?用定時器6

步驟

1. 在cubemx中配置通信引腳,定時器,打開中斷。

2. 將例程中的文件加入自己的,要對照工程加。

3. 運行,出現報錯后修改,以下是我運行過程中修改的地方,按記憶記錄,不一定完全。

改一:

mx生成的MX_USART2_UART_Init()里面沒有未知參數,要改。

改二:

USART2在cubemx配置的是同步,生成代碼后,去這個配置文件中把#define HAL_USART_MODULE_ENABLED ?的注釋解開,用到了這個庫的函數

改三:

因為void USART2_IRQHandler(void)在stm32f1xx_it和portserial_m都有,我選擇把stm32f1xx_it里面的注釋掉。

?改四:

我的定時器和例程用的不同,他用的4,我用的6,并且mx自動幫我配置了,所以要把porttimer_m里面的void TIM4_IRQHandler(void)注釋掉

?改五:

在mx生成的usart.h中添加引腳定義,另外我用到了485,需要打開485注釋,并且修改引腳,注意引腳方向。

改六:

?main.c文件中也要記得改。

運行結果

將程序下載到芯片后,打開modbus slave軟件連接。modbus上位機使用方法參考:Modbus測試工具ModbusPoll與Modbus Slave使用方法_modbuspoll中文版-CSDN博客

連接后,現象如圖。

點擊Display->Communication,可以看到通訊內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89142.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring MVC 執行流程詳解:一次請求經歷了什么?

Spring MVC 執行流程詳解:一次請求經歷了什么? 引言 在現代 Web 開發中,Spring MVC 作為 Spring 框架的重要組成部分,廣泛應用于構建靈活、可擴展的 Java Web 應用。作為一個基于 MVC(Model-View-Controller&#xff0…

Vue 3的核心機制-解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案

文章目錄概要整體介紹vue 中dom操作推薦方案實例概要 從Vue 3的核心機制出發,結合場景、應用與實例,系統化解析事件流、DOM更新、數據請求、DOM操作規范及組件庫DOM操作的解決方案: 整體介紹 ?? 一、事件流處理機制 核心機制 ? 三個階段…

Python從入門到高手9.2節-Python字典的操作方法

目錄 9.2.1 字典的操作 9.2.2 字典的查找 9.2.3 字典的修改 9.2.4 字典的添加 9.2.5 字典的刪除 9.2.6 今天你逛街了嗎 9.2.1 字典的操作 字典類型是一種抽象數據類型,抽象數據類型定義了數據類型的操作方法,在本節的內容中,教同學們徹…

omniparser v2 本地部署及制作docker鏡像(20250715)

關于 omniparser v2 本地部署,網上資料不算多,尤其是對于土薔內用戶,還是有些坑的。 1、安裝步驟 可參考兩個CSDN博客: (1)大模型實戰 - ‘OmniParser-V2本地部署安裝 鏈接 (2)…

自己寫個 `rsync` + `fswatch` 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的SFTP等 插件!

自己寫個 rsync fswatch 實時增量同步腳本,干掉 Cursor AI、Sublime Text 的 SFTP等 插件! 作為一個碼農,我最頭疼的事情之一就是編輯器同步代碼到服務器這塊。用過各種各樣的sftp、rsync插件,感覺不好用。。 我琢磨著&#xff1…

linux中at命令的常用用法。

Linux 中 at 命令用于安排一次性定時任務,需要用到在某個時間只需要執行一次的命令的時候,可以使用at 1:安裝at # Debian/Ubuntu sudo apt install at# CentOS/RHEL sudo yum install at2:啟動at sudo systemctl start atd # 啟…

【安卓筆記】RxJava的使用+修改功能+搭配retrofit+RxView防快速點擊

0. 環境: 電腦:Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version:8.11.1 Compile Sdk Version:35 Java 版本:Java11 1. 介紹RxJava GitHub開源地址:https://github.com/Reactive…

Windows 下原生使用 claude code + Kimi K2

搞定了kimi k2 claude code在windows下原生使用 Windows下使用claude code的障礙是shell環境(命令行),非posix風格shell無法正常讓claude code讀取到url和key, 導致無法使用。解決問題的本質是使用符合posix風格的shell環境,我們…

Leetcode Easy題小解(C++語言描述)1

Leetcode Easy題小解(C語言描述) 相交鏈表 給你兩個單鏈表的頭節點 headA 和 headB ,請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表不存在相交節點,返回 null 。 圖示兩個鏈表在節點 c1 開始相交**:**題目數據…

EP01:【NLP 第二彈】自然語言處理概述

一、NLP通向智能之路 1.1 圖靈測試 1.1.1 提出背景 由計算機科學家阿蘭?圖靈于 1950 年提出,是早期衡量機器智能水平的重要概念。 1.1.2 提出目的 判斷機器是否能表現出與人類相當的智能行為。 1.1.3 測試原理 場景設定:測試中存在一位人類測試者&#…

Ansible 查看PostgreSQL的版本

Ansible的基礎知識就不說了直接貼劇本- name: Check PostgreSQL versionhosts: db_serversbecome: yesvars:ansible_python_interpreter: /usr/bin/python3db_name: postgresdb_user: postgresdb_password: your_passwordtasks:- name: Install psycopg2ansible.builtin.packag…

【視覺SLAM筆記】第9章 后端1

一、理論1. 狀態估計的概率解釋我們來深入探討一下視覺SLAM中狀態估計的概率解釋。這可以說是理解現代SLAM算法(尤其是后端優化)的基石1. 問題的核心:不確定性SLAM(同步定位與建圖)的本質是在一個未知環境中&#xff0…

(數據結構)復雜度

基本概念說明 數據結構 定義:數據結構(Data Structure)是計算機存儲、組織數據的方式,指相互之間存在?種或多種特定關系的數據元素的集合。沒有?種單?的數據結構對所有用途都有用(要考慮適配、效率問題,在不同情況下使用合適的…

玩轉Docker | 使用Docker部署bender個人導航頁工具

玩轉Docker | 使用Docker部署bender個人導航頁工具 前言 一、bender介紹 Bender 簡介 Bender 的主要特點 二、系統要求 環境要求 環境檢查 Docker版本檢查 檢查操作系統版本 三、部署bender服務 下載bender鏡像 編輯部署文件 創建容器 檢查容器狀態 檢查服務端口 安全設置 四、…

解決了困擾我的upload靶場無法解析phtml等后綴的問題

本文章為解決困擾我的 upload 靶場無法解析 phtml 問題 ? 這個問題直接讓我過不了Upload-Pass-03這一關,一直卡著。 ? 痛太痛了 ,為什么無法解析上傳之后的 phtml 后綴文件!這塊兒折磨了博主一天多,太不容易了,查找…

Leetcode百題斬-二分搜索

二分搜索也是一個很有趣的專題,被做過的題中,剛好一個Easy,一個Medium和一個Hard,剛好可以看看,二分搜索的三個難度等級都是啥樣的。 124. Binary Tree Maximum Path Sum[Hard](詳見二叉樹專題)…

【IDEA】格式化代碼工具配置

格式化代碼快捷鍵: CtrlAltL格式代碼的時候不會再方法名與參數中間添加空格默認不勾選的情況下:代碼樣例:勾選之后的樣例:選擇不勾選,IDEA默認情況下就是不勾選的狀態忽略加載文件有些非必要加載到開發工具中的文件我們…

驅動開發(3)|rk356x驅動GPIO基礎應用之點亮led燈

點亮LED燈看似是一個基礎的操作,但實際上,許多高級應用也依賴于高低電平的切換。例如,脈沖寬度調制(PWM)信號可以用來精確控制電機的轉速,通過改變脈沖的頻率和占空比,實現對電機的精確調節&…

手動搭建PHP環境:步步為營,解鎖Web開發

目錄一、引言二、準備工作2.1 明確所需軟件2.2 下載軟件三、Windows 系統搭建步驟3.1 安裝 Apache 服務器3.2 安裝 PHP3.3 集成 Apache 與 PHP3.4 安裝 MySQL3.5 配置 PHP 連接 MySQL四、Linux 系統搭建步驟(以 Ubuntu 為例)4.1 更新系統4.2 安裝 Apache…

DrissionPage:一款讓網頁自動化更簡單的 Python 庫

在網頁自動化領域,Selenium 和 Playwright 早已是開發者耳熟能詳的工具。但今天要給大家介紹一款更輕量、更易用的 Python 庫 ——DrissionPage。它以 "融合 selenium 和 requests 優勢" 為核心設計理念,既能像 requests 一樣高效處理靜態網頁…