随着协议种类的增多及复杂程度的增加,像上小节手动解析数据包的方式工作量会大量增加,所以需要一个规范的、完整的协议栈(例如LWIP,uip等)来处理数据包,这样,用户只关心应用层的数据即可;另外,LWIP虽然在无需操作系统也可以运行,但性能较差,API接口使用也受限制,所以还需要一个RTOS配合使用,相得益彰;所以本小节与下小节进行移植FreeRTOS与LWIP,后续小节再继续进行网络协议的介绍。本
转载
2024-09-28 12:25:57
182阅读
一.前言在上节我们实现了FTP网络传输功能,实现了通过网络对设备的文件进行读写的功能,但是我们要是没网呢,想要导出数据文件怎么办??首先想到了USB,这次我们通过usb的otg接口,实现一个模拟读卡器的功能,将设备插入到电脑后,将我们的sdcard作为一个U盘,我们就可以直接通过电脑进行拷贝了。此次我们选用了usb-device模式,usb提供的复合设备类型,可以让给usb添加虚拟串口及读卡器的功
转载
2024-04-01 06:17:46
233阅读
一、准备一个STM32F407的基础工程,越简单越好,向工程中添加相应文件1、添加FreeRTOS源码(1)、在基础工程文件中新建一个名为FreeRTOS的文件夹,将FreeRTOS的源码添加到文件里,如下图所示:2、在portable文件夹中只保留 keli,MemMang,RVDS三个文件夹即可,其他全部删除,如下图所示二、向工程分组中添加文件1、打开基础工程,在工程文件中新建分组FreeRT
STM32F407 FreeRTOS移植一、获取FreeRTOS源码打开FreeRTOS官网:www.freertos.org,在官网下载即可,这里不做步骤说明,或者通过百度下载即可,下载网址: 链接:https://pan.baidu.com/s/1l3QMTdRNGPFbZfb-d2McRw 提取码:yyds二、FreeRTOS移植2.1准备工程使用一个配置好时钟的工程,如LED库函数开发工程
from:http://www.51plc.com/thread-10584-1-2.html表1 ModBus功能码功能码名称作用01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)02读取输入状态取得一组开关输入的当前状态(ON/OFF)03读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值04读取输入寄存器在一个或多个输入寄存器中取得当前的二进制值05强置单线圈强置一
概念 先明确一个概念:每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调用read进行读取的话,此数据会一直缓存在相应 socket的接收缓冲区内。再啰嗦一点,不管进程是否读取socket,对端发来的数据都会经由内核接收并且缓
转载
2024-09-20 07:33:38
169阅读
前一段时间一直在研究modbus协议的源代码,并且自己用单片机C实现了一下但是其实没什么卵用的,因为根本就不可能用在实际工程中也是自己当时太不懂行情了上网搜了一下我觉得实际人家产品上用的很少应该是自己去写,因为那根本就不合算而且还会出错,又走了弯路我觉得一般的做从站用freemodbus就很好也是因为水平太菜就这个freemodbus也差不多弄了有1个礼拜今天终于搞定了能转起来并能正确的返回数据因
转载
2024-04-25 13:10:45
92阅读
线程与线程就绪列表: 在RTT系统中,链表是一个相当重要的数据结构,RTT通过链表,来管理一些事物,例如说线程。 在线程控制块中,有一个线程链表节点:rt_list_t tlist; /**< the thread list */ 这个节点可以将线程控制块挂载到一些链表中。在线程创建之后,线程首先被添加到就绪列表中,
转载
2024-10-27 08:58:37
50阅读
下面为Rt-Thread移植到stm32的过程。一、下载 RT-Thread Nano 源码RT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。其内存资源占用极小,功能包括任务处理、软件定时器、信号量、邮箱和实时调度等相对完整的实时操作系统特性。适用于家电、消费电子、医疗设备、工控等
任务函数原型:void ATaskFunction(void * pvParameters); 任务不允许从实现函数中返回.如果一个任务不再需要,可以用vTaskDelete()删除;一个任务函数可以用来创建多个任务,各任务均是独立的执行实例,拥有属于自己的栈空间. 典型的任务函数结构: void ATaskFunction( void *pvParameters )
{
目录1.第一步准备好基础工程 2.软件仿真相关设置3.软件仿真环境,printf重定向4.移植FreeRtos源码4.1 拷贝文件5.增加freertos源码到keil工程中5.1增加.c文件到工程:5.2增加头文件到工程:6.修改编译问题7.修改SYSTEM文件和systick中断处理函数7.1 修改sys.h文件7.2 修改usart.c文件7.3 修改delay
1、移植前准备一、开发环境MDK、STM32F103R8T6(我身边的板子是这个型号、学习用)二、简单工程里面不能有 SysTick,PendSV 和 SVC 三个系统中断的使用,因为 FreeRTOS 系统要使用这三个中断2、正式移植一、从官网下载FerrRTOS FreeRTOS下载地址 https://sourceforge.net/projects/fre
转载
2024-03-25 11:08:42
232阅读
文章目录前言一、问题描述二、解决方案1. 线程安全、中断安全的printf实现方式总结参考 前言利用串口对基于FreeRTOS的多任务程序调试过程中,时常出现数据交叉打印,甚至出现乱码现象。这是因为通常情况下,串口打印函数所在任务的优先级不高,或者在程序中有多个任务均包含打印函数。此时,当发送数据时,容易被中断或者其它优先级更高的任务打断或抢占,在发送的数据量较大情况下,该现象尤为明显。文本将介
1. 前言因为工作的需要,学习FreeRTOS已经有一段时间了。接下来一段时间会定期更新本人学习FreeRTOS的系列笔记。系列笔记主要参考了官方的说明手册和FreeRTOS的源代码。其主要思想是先了解FreeRTOS的对外接口,即理清其对外可见的功能,以此作为切入点,逐步深入其内涵(即内部实现)。这是一种由外而内的学习方法,其好处很明显:由浅入深,逐渐深入;满足不同需求层析的人的需求:对于只需要
文章大致分为三步: 1.串口使用 2.增加资源(添加图片) 3.修改背景 (想要看如何添加背景的直接跳到最后就可以了。)首先新建一个工程,命名为serialRead,这里注意下选择编译器那个界面最好只选择一个,否则最后构建项目的时候没准就会编译器混着用,可能会出些奇怪的问题,虽然可以在构建那改,但多一事不如少一事。新建工程之后,首先要在生成的pro文件的末尾加上一句QT +=serialport
FreeModbus从站设计(6)-让串口和Modbus初始化的参数同步起来关键词:Modbus FreeModbus STM32F103C8T6 CubeMX 移植 1.基本原理在这一篇文章中主要介绍协议栈初始化,以及与串口相关的代码修改。串口的初始化函数是CubeMx自动生成的,其波特率等参数最好与freemodbus协议栈初始化参数保持一致,这样方便程序的维护和功能扩展,例如,当需
转载
2024-07-30 21:06:44
186阅读
日期作者版本说明2020.11.06TaoV0.0完成主体内容的撰写 目录介绍源码头文件源文件使用指南 介绍源码需要特别说明的是void User_MB_InitPortParam(uint8_t portNum, uint32_t baudRate, eMBParity parity)函数。此函数并没有真正的配置通讯端口,而是初始化modbus通讯端口参数的几个全局变量。设计这些全局变量的主要原
转载
2024-04-19 22:15:29
931阅读
modbus协议与串口服务器功能测试Modbus协议Modbus RTU 模式Modbus ASCII 模式Modbus TCP/IP 模式串口服务器简介测试 Modbus协议Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De f
转载
2024-08-03 13:51:42
154阅读
平台:正点原子STM32F407探索者开发板 + FreeModbus V1.6 + RT-Thread源码链接:https://www.embedded-solutions.at/en/freemodbus-downloads/源码列表如图所示,需要的文件包括modbus文件夹和demo文件夹内的port相关文件,port文件位置如下图在BASE文件夹内有一个port文件夹(内含需要的port相
转载
2024-04-23 14:40:12
228阅读
1评论
1 概述这是一个针对RT-Thread国产操作系统的FreeRTOS操作系统兼容层,可以让原有基于FreeRTOS操作系统的项目快速、无感地迁移到RT-Thread操作系统上,实现在RT-Thread操作系统上无感的使用FreeRTOS的API,同时可以使用RT-Thread的丰富组件。项目基于FreeRTOS V10.4.6版本。1.1 RT-Thread的其他RTOS兼容层RT-T
转载
2024-03-18 11:46:06
76阅读