背景 

【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 一样高效处理静态网页…