RT-Thread Studio实现以太网modbus功能:

1.创建芯片对应工程,STM32F407VGT6,这个网络很多。

2.添加文件stm32f4xx_hal_msp.c

3.stm32f4xx_hal_msp.c添加以太网管脚驱动代码,通过STM32CubeMX生成或直接在官网例程中复制。

管脚操作,包含文件:#include <rtdevice.h>

#ifdef  BSP_USING_ETH#define RESET_IO GET_PIN(C, 0)void phy_reset(void)
{rt_pin_mode(RESET_IO, PIN_MODE_OUTPUT);rt_pin_write(RESET_IO, PIN_HIGH);rt_thread_mdelay(50);rt_pin_write(RESET_IO, PIN_LOW);rt_thread_mdelay(50);rt_pin_write(RESET_IO, PIN_HIGH);
}
/**
* @brief ETH MSP Initialization
* This function configures the hardware resources used in this example
* @param heth: ETH handle pointer
* @retval None
*/
void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
{GPIO_InitTypeDef GPIO_InitStruct = {0};if(heth->Instance==ETH){/* USER CODE BEGIN ETH_MspInit 0 *//* USER CODE END ETH_MspInit 0 *//* Peripheral clock enable */__HAL_RCC_ETH_CLK_ENABLE();__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOG_CLK_ENABLE();/**ETH GPIO Configuration    PC1     ------> ETH_MDCPA1     ------> ETH_REF_CLKPA2     ------> ETH_MDIOPA7     ------> ETH_CRS_DVPC4     ------> ETH_RXD0PC5     ------> ETH_RXD1PG11     ------> ETH_TX_ENPG13     ------> ETH_TXD0PG14     ------> ETH_TXD1 */GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF11_ETH;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_7;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF11_ETH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14;GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate = GPIO_AF11_ETH;HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);/* ETH interrupt Init */HAL_NVIC_SetPriority(ETH_IRQn, 0, 0);HAL_NVIC_EnableIRQ(ETH_IRQn);/* USER CODE BEGIN ETH_MspInit 1 *//* USER CODE END ETH_MspInit 1 */}}#endif

4.开启以太网接口与以太网库文件:

board.h文件中,以太网PHY芯片按需求选择。

#define BSP_USING_ETH
#ifdef BSP_USING_ETH
#define PHY_USING_LAN8720A
/*#define PHY_USING_DM9161CEP*/
/*#define PHY_USING_DP83848C*/
#endif

stm32f4xx_hal_conf.h文件中打开库文件调用使能:#define HAL_ETH_MODULE_ENABLED

5.双击1,在右边单击2,选择lwip,在3不要DHCP自动分配IP,选择4固定IP,更改需要的IP地址。保存配置,编译、下载程序到控制板,ping包OK。

6。软件包中心,搜索modbus,我选择的是libmodbus添加,

.

7.添加后点右键查看软件包详细信息,选择tcp mdde,使能示例程序,保存后会下载软件包,左边自动出现程序。

8.打开modbus_tcp_test.c程序,static void test_thread(void *param)函数中ctx = modbus_new_tcp(RT_NULL, 502, AF_INET);502是以太网连接端口,打开modbus poll软件测试通过。

RT-Thread学习1-tcp_modbus相关推荐

  1. Yeelink平台使用——远程控制 RT Thread + LwIP+ STM32

    1.前言     [2014年4月重写该博文]     经过若干时间的努力终于搞定了STM32+LwIP和yeelink平台的数据互通,在学习的过程中大部分时间花在以太网协议栈学习上,但是在RT Th ...

  2. RT Thread之 Uart2 操作

    官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uar ...

  3. 使用RT Thread设备框架封装一个I2C设备——DS3231

    使用RT Thread设备框架封装一个I2C设备--DS3231 前言 ENV配置 I2C测试 将ds3231封装成一个字符设备 结语 前言 学习rt thread的I2C的时候,恰巧手上的板子留了d ...

  4. 基于GD32F103C8T6添加RT Thread nano设备框架并添加串口设备(以控制台console( uart0 )为例)

    最近没事琢磨了一下使用设备框架的问题.因为将串口注册到设备框架可以应用十分丰富的软件包. 于是就整理了一下手上的工程,重新将工程梳理了一遍. 像这样是十分清爽了,其中RTOS是操作系统源代码 并且学习 ...

  5. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

  6. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  7. rt thread 使用FAL遇到fal_init() undefined reference

    rt thread FAL 0.5版,之前有没有不知道,遇到一个坑. 在main.cpp里面已经 #include <fal.h> fal_init() 编译报错,说 fal_init() ...

  8. RT Thread Free Modbus移植问题整理

    RT Thread Free Modbus移植问题整理 问题描述: 在读写寄存器中,写数据正常,只能读1个寄存器的值,多个值会异常. 在移植过程中发现串口(或RS485)数据接收长度异常. 一.环境描 ...

  9. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  10. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

最新文章

  1. python方法调用名字不一样_python中调用父类同名方法
  2. 正确认识Arrays.asList方法
  3. ABPZero系列教程之拼多多卖家工具
  4. 6.dubbo常用的xml配置有哪些_【面试篇】必须掌握的Spring 常用注解
  5. 搞一个兼容浏览器的事件函数
  6. IT历史:IT史重大失败教训
  7. ICE Tester method viewer 的安装和使用,和客制化代码配合使用
  8. c++ iterator(迭代器)分类及其使用
  9. 1 javascript视频教程 初识javascript
  10. 微信登录提示逻辑不正确_微信逻辑错误无法登录
  11. Node.js 网页瘸腿爬虫初体验
  12. 全电动梅赛德斯EQS年底将在曼谷生产下线;麦格纳突破车尾照明技术2023年可投入生产 | 美通企业日报...
  13. Vue 3 模板语法
  14. 3D游戏开发所需的数学基础——矩阵
  15. 孩子小学总喜欢用计算机做数学,数学到底该怎样学?真实用!
  16. Unity 之 音频类型和编码格式介绍
  17. 使用 Navicat 备份还原数据库
  18. 计算机小知识140,电脑小知识140个小技巧(7)
  19. VC6工程转VC9工程常见错误
  20. 3D变电站园区3D可视化电力监控管理平台

热门文章

  1. windows 8 pro vl_微软MSDN原版Windows10/8/7/XP系统镜像与office下载地址大全
  2. Android高仿陌陌应用点点滑动效果
  3. vb.net 同时给多个属性赋值_C++程序入门之——赋值操作符
  4. Google Professional Data Engineer(PDE)考试
  5. Aspose.Words 表格添加斜线 并添加文字
  6. 基于遗传算法自动组卷的实现
  7. PDF格式分析(六十六) Text 文字——简单字体
  8. 快递物流查询,分析派件时效,查找正在派件的单号
  9. 多租户SaaS管理系统框架设计:多租户,多组织,用户区别
  10. 在creo中,如何在轴上画一个键槽?