- 博客(167)
- 收藏
- 关注
原创 ROS2 通信接口
本文将深入探讨ROS2的通信接口,包括话题接口(.msg)、服务接口(.srv)和动作接口(.action),以及它们在机器人系统中的应用。
2024-12-25 16:19:34
707
原创 ICMP 协议:网络通信中的守护者
ICMP(Internet Control Message Protocol,因特网控制消息协议)是TCP/IP协议族中的一个关键成员,主要在网络层工作。这个协议虽不直接传输用户数据,但它在网络控制和错误报告方面扮演着至关重要的角色,可以说是网络通信中的“守护者”。
2024-12-11 09:23:19
1103
原创 IP 协议
IP协议,即互联网协议,是互联网中用于数据包传输的基本规则。它定义了数据包在网络中如何被寻址、封装、传输和解封装,从而确保数据能够准确无误地从源端到达目的端。IP协议主要分为IPv4(Internet Protocol Version 4)和IPv6(Internet Protocol Version 6)两个版本,其中IPv4是目前广泛使用的版本,但随着互联网的快速发展,IPv6因其更大的地址空间而逐渐受到重视和推广。
2024-12-11 09:15:53
392
原创 lwip ARP 协议
ARP协议,即地址解析协议,是网络层的一个重要组成部分。在TCP/IP协议栈中,ARP协议负责将IP地址解析为MAC地址。简而言之,当一台主机需要向另一台主机发送数据时,它只知道目标主机的IP地址,而为了在网络中实际传输数据,必须知道目标主机的MAC地址。ARP协议正是实现了这一从IP地址到MAC地址的转换过程。
2024-12-10 11:40:30
651
原创 lwIP pbuf 结构
LwIP协议栈的设计初衷是在资源受限的嵌入式系统中实现一个完整的TCP/IP协议栈。为了实现这一目标,LwIP采用了高效的内存管理和数据包处理机制,其中pbuf结构便是这一机制的关键组成部分。pbuf,即Packet Buffers,是一种用于在协议栈内部传递数据的数据结构,它起源于FreeBSD协议栈中的mbuf结构,但经过简化以适应LwIP的轻量级需求。
2024-12-09 14:09:26
830
原创 lwIP 网络接口管理
在LwIP中,网络接口(网卡)通过netif结构体进行描述和管理。netif结构体在netif.h文件中定义,包含了网络接口的各种信息和函数指针,用于实现网络数据的接收和发送。
2024-12-09 11:25:16
455
原创 lwIP 内存管理
内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效、快速地分配内存,并在适当的时候释放和回收内存资源。在C语言中,通常使用malloc和free函数来实现内存的分配与释放。然而,在嵌入式系统中,由于资源有限,这种通用的内存管理策略往往需要进行优化。
2024-12-08 19:58:58
680
原创 LAN8720A 简介
LAN8720A是一款低功耗10/100Mbps以太网物理层收发器。它采用了先进的低功耗设计,支持多种省电模式,包括掉电模式、关断模式和能量检测模式,能够有效降低功耗,延长设备的使用寿命。同时,LAN8720A还具备高集成度、低引脚数、易开发等特点,使得它在空间受限的应用场景中表现出色。
2024-12-08 08:00:00
835
原创 YT9215RBH 简介
YT9215RBH是裕太微电子基于其深厚的技术积累和创新实力,精心打造的一款以太网收发器。该产品采用LQFP-128(14x14)封装形式,具有体积小、集成度高等特点。同时,它支持多种接口类型,如RGMII、MII和RMII,能够满足不同应用场景下的需求。
2024-12-07 14:29:07
580
原创 YT8512C 简介
YT8512C是一款专为嵌入式系统、视频监控、工业控制及工厂自动化等应用领域设计的以太网物理层收发器。它提供了基于CAT5双绞线的完整物理层功能,支持10Mbps和100Mbps两种传输速率,能够满足不同场景下的网络通信需求。
2024-12-07 14:24:23
677
原创 以太网接入 MCU 方案
外置以太网控制器方案通过将独立的以太网控制器模块与MCU连接,实现网络通信功能。这种方案灵活性高,适用于多种MCU平台。
2024-12-05 14:02:05
1936
原创 LwIP与TCP/IP的关系
从实现上看,LwIP采用了模块化的设计方式,将TCP/IP协议栈划分为多个独立的模块。每个模块都负责特定的功能,如内存管理、协议实现、网络接口等。这种设计方式不仅提高了LwIP的可移植性和可扩展性,还使得开发者能够根据需要裁剪和优化协议栈,以适应不同嵌入式系统的需求。从功能上看,LwIP实现了TCP/IP协议栈中的大部分功能,包括ARP、ICMP、IGMP、UDP、TCP等协议。同时,LwIP还采用了动态内存池和静态内存堆等内存管理机制,以确保在资源受限的嵌入式系统中高效地利用内存资源。
2024-12-05 13:55:36
529
原创 LWIP简介
LwIP是由瑞典计算机科学院(SICS)的Adam Dunkels等人开发的一款小型开源TCP/IP协议栈,特别适用于资源受限的嵌入式系统。它的设计初衷是在保持TCP协议主要功能的基础上,尽量减少对RAM的占用,从而使其能够在内存资源有限的平台上运行。LwIP既可以在有操作系统的环境下运行,也可以在没有操作系统的裸机环境中独立运行,这使得它具有很强的适应性和灵活性。综上所述,LwIP作为一款轻量级的TCP/IP协议栈,以其资源占用少、功能相对完整的优势,在嵌入式系统领域发挥着重要作用。
2024-12-04 18:47:12
1201
原创 ROS2 服务实例:探索与实践
首先,我们需要在ROS2接口文件中定义服务的请求和响应消息类型。例如,创建一个名为AddTwoInts的服务,该服务接收两个整数作为请求,返回它们的和作为响应。
2024-12-04 10:00:16
578
原创 ROS2 话题实例解析
首先,我们需要定义一个用于传递障碍物信息的消息类型。在 ROS2 中,消息类型通常使用 IDL(接口描述语言)进行定义,并存储在.msg文件中。string id上述消息类型包含障碍物的 ID、位置(x、y 坐标)和大小。
2024-12-03 11:13:47
690
原创 ROS2 节点
ROS2节点是ROS2系统中的基本通信单元,它负责执行特定的任务,并与其他节点进行信息交换。每个节点都可以看作是一个独立的进程,拥有自己的生命周期和资源管理。通过节点的协作,ROS2系统能够完成复杂的任务,如环境感知、决策规划、运动控制等。ROS2节点通过发布(Publish)/订阅(Subscribe)机制、服务(Service)/客户端(Client)机制以及参数服务器(Parameter Server)等方式进行通信。这些通信机制使得节点之间能够高效地传递信息,实现系统的协同工作。
2024-12-03 11:05:32
395
原创 FreeRTOS 任务通知实例
假设我们有两个任务:TaskA和TaskB。TaskA负责发送通知,而TaskB负责接收通知并执行相应操作。while(1)// 发送通知给TaskB// 通知值设置为0x01// 如果需要,则进行任务切换// 模拟一些工作while(1)// 等待通知// 检查通知值并执行相应操作// 执行操作,例如打印信息或处理数据\n”);
2024-12-02 11:13:44
1109
原创 FreeRTOS 事件标志组实例
事件标志组是FreeRTOS中用于任务间同步与通信的一种机制。它通过一组位(bit)来表示不同的事件,每个位可以独立设置或清除,代表特定事件的发生状态。任务或中断服务例程(ISR)可以读取这些位,从而判断特定事件是否已经发生,进而采取相应的动作。
2024-12-02 11:08:47
997
原创 FreeRTOS 软件定时器
软件定时器是一种由操作系统提供的系统接口,它构建在硬件定时器基础之上,使系统能够提供不受硬件定时器资源限制的定时器服务。与硬件定时器相比,软件定时器的精度可能稍低,但其灵活性和易用性使其在许多应用场景中更具优势。软件定时器可以分为单次定时器和周期定时器两种类型。单次定时器在触发一次回调函数后即停止运行,而周期定时器则会周期性地触发回调函数。这种机制使得软件定时器在需要周期性执行任务的场景中非常有用,如心跳检测、状态更新等。
2024-11-30 17:52:32
633
原创 FreeRTOS 递归互斥信号量
FreeRTOS 递归互斥信号量递归互斥信号量(Recursive Mutex)是一种重要的同步机制,它允许同一任务在多次调用中安全地获取和释放信号量,而不会导致死锁。
2024-11-30 17:47:54
524
原创 FreeRTOS 互斥信号量
FreeRTOS中的互斥信号量是一种特殊的二进制信号量,用于实现任务间的互斥访问。它主要用于保护临界区代码,防止多个任务同时访问共享资源而导致的数据不一致问题。互斥信号量的工作机制基于“请求-授予”模型,即当一个任务需要访问共享资源时,会先请求互斥信号量,如果信号量可用(即当前没有任务持有信号量),则任务获得信号量并进入临界区;如果信号量不可用(即已有任务持有信号量),则任务会被阻塞,直到信号量被释放。
2024-11-29 09:23:57
547
原创 FreeRTOS 计数型信号量
计数型信号量是一种可以容纳多个资源的信号量,其取值大于1,相当于一个长度大于1且消息大小为0的特殊消息队列。在创建计数型信号量时,系统会为其分配内存,并设置最大计数值和初始计数值。最大计数值定义了信号量可以容纳的资源数量上限,而初始计数值则指定了信号量在创建时的资源数量。计数型信号量的主要操作包括创建、释放、获取和获取计数值。这些操作通过FreeRTOS提供的API函数实现,确保了任务间的同步和资源的安全访问。
2024-11-29 09:12:57
812
原创 FreeRTOS 二值信号量
二值信号量可以看作是一个深度为1的队列,这个队列要么为空(信号量为0),要么为满(信号量为1)。任务在获取信号量时,如果队列为空,则任务进入阻塞状态;如果队列为满,则任务成功获取信号量并继续执行。在释放信号量时,任务将信号量放回队列,使得队列从满变为空,从而唤醒等待在该信号量上的其他任务。
2024-11-28 09:41:03
1294
原创 FreeRTOS 队列
队列是一种先进先出(FIFO,First In First Out)的数据结构,它允许任务或中断服务程序(ISR)发送和接收数据。在FreeRTOS中,队列可以用于任务到任务、任务到中断、中断到任务之间的数据传输。使用队列时,需要指定队列的长度(即可以存储的最大消息数)和每个消息的大小(以字节为单位)。
2024-11-28 09:23:51
510
原创 FreeRTOS 时间管理
FreeRTOS的时间管理机制为实现高效、可靠的实时任务调度提供了坚实的基础。通过时钟节拍管理、延时函数以及定时器的使用,FreeRTOS能够确保任务的及时执行和系统的稳定运行。在实际应用中,开发者应根据任务的具体需求选择合适的时间管理方式。对于需要精确控制执行周期的任务,可以使用绝对延时或定时器;而对于对执行时间要求不那么严格的任务,则可以使用相对延时。
2024-11-27 10:08:01
515
原创 FreeRTOS 任务切换实例
FreeRTOS通过任务切换实现多任务并发执行,从而提高系统的响应速度和资源利用率。任务切换的本质是CPU寄存器的切换,它包含两个主要步骤:保存现场和恢复现场。当系统决定从一个任务切换到另一个任务时,它会先保存当前任务的寄存器状态(即保存现场),然后加载另一个任务的寄存器状态(即恢复现场)。这样,新任务就能从上一次停止的地方继续执行。
2024-11-26 19:01:02
804
原创 FreeRTOS 系统启动流程
一旦`vTaskStartScheduler`函数成功启动调度器,系统就会开始运行创建的任务。任务调度器会根据任务的优先级和调度策略进行任务切换,确保每个任务都能得到合理的执行时间。
2024-11-26 18:47:14
1035
原创 FreeRTOS 任务挂起和恢复实验
在FreeRTOS中,任务挂起是指将一个正在运行或等待运行的任务置于挂起状态,使其暂时不参与调度,从而暂停其执行。任务恢复则是将挂起的任务重新置为就绪状态,使其能够参与调度并继续执行。FreeRTOS提供了`vTaskSuspend()`和`vTaskResume()`两个API来实现任务的挂起和恢复。其中,`vTaskSuspend()`用于挂起一个或多个任务,而`vTaskResume()`则用于恢复一个之前被挂起的任务。
2024-11-25 11:26:31
433
原创 FreeRTOS 任务管理
在FreeRTOS中,任务(Task)是RTOS调度的基本单位。每个任务都是一个独立的函数,执行特定的功能。FreeRTOS通过任务优先级和任务状态(如就绪、运行、阻塞等)来管理任务。
2024-11-25 11:12:39
445
原创 ros2 功能包
ROS2功能包是包含机器人应用程序代码、配置文件和元数据的集合。每个功能包都专注于特定的功能或任务,如传感器驱动、运动控制、路径规划等。这种模块化的设计使得ROS2系统能够轻松扩展和维护,同时也促进了代码的复用和社区协作。功能包通过XML文件描述其依赖关系,确保在构建和运行时能够正确加载所需的库和资源。ROS2提供了对C++、Python等多种语言的支持,使得开发者可以根据项目需求选择合适的技术栈。
2024-11-24 09:30:00
371
原创 Python pip使用:高效管理Python包的利器
Python pip使用:高效管理Python包的利器一、pip简介pip是Python的包安装程序(Package Installer),它允许用户从Python包索引(Python Package Index,简称PyPI)安装和管理软件包。pip不仅支持包的安装,还具备升级、卸载、列出已安装包以及检查包版本等多种功能,是Python开发过程中不可或缺的工具。二、pip的基本使用使用pip安装Python包非常简单,只需在命令行中输入即可。
2024-11-24 08:00:00
387
原创 ROS2 工作空间:构建高效机器人开发环境的基石
ROS2工作空间是一个包含源代码、构建系统和安装目录的目录结构。它允许开发者将多个ROS2包(package)组织在一起,形成一个逻辑上紧密相关的项目集合。每个包可以包含节点的实现、服务定义、消息类型以及相关的配置文件等。通过工作空间,开发者可以轻松地管理项目的依赖关系,实现代码的复用和模块化开发。
2024-11-23 11:26:22
440
原创 排序算法(五)--归并排序
归并排序采用分治法(Divide and Conquer)策略,其基本思想是将待排序的数组分成若干个子数组,分别对每个子数组进行排序,然后再将已排序的子数组合并成一个有序的数组。归并排序的时间复杂度为O(n log n),无论数据初始状态如何,其时间复杂度均保持不变,因此是一种较为稳定的排序算法。
2024-11-22 10:42:25
1285
原创 排序算法(三)--插入排序
插入排序的基本思想是将数组中的元素逐一取出,然后将其插入到已经排好序的部分中的适当位置,直到整个数组排序完成。具体步骤如下:初始状态:假设数组的第一个元素已经排好序。从第二个元素开始:依次取出每个元素,与已经排好序的部分进行比较。找到插入位置:在已经排好序的部分中,从后向前扫描,找到该元素应该插入的位置。插入元素:将该元素插入到找到的位置,并将插入位置之后的所有元素向后移动一位。重复步骤:重复上述步骤,直到所有元素都被插入到适当位置。下面是一个用C语言实现的插入排序示例代码:#include
2024-11-21 18:41:32
370
原创 ROS2与ROS1对比:机器人操作系统的革新与演进
综上所述,ROS2作为ROS的下一代版本,在系统架构、通信机制、编译系统、多语言支持以及应用场景等方面都进行了全面的升级和优化。这些改进不仅提高了机器人应用的开发效率和部署灵活性,还为机器人技术的进一步发展奠定了坚实的基础。展望未来,随着机器人技术的不断进步和应用场景的日益拓展,ROS2将在更多领域发挥重要作用。
2024-11-21 08:00:00
724
原创 排序算法(一)-冒泡排序
冒泡排序虽然简单易懂,但其时间复杂度较高,为O(n^2),不适合大规模数据的排序。然而,对于小规模数据或教学演示,冒泡排序仍然是一个很好的选择。
2024-11-20 08:00:00
884
一阶滞后滤波法,作为一种简单而有效的滤波方法,被广泛应用于各种信号采集与处理系统中
2024-11-05
限幅平均滤波法作为一种结合了限幅滤波和平均滤波特性的算法,广泛应用于各种需要去除噪声和干扰的场合
2024-11-05
中位值平均滤波法(Median-Average Filtering)作为一种结合了中位值滤波与平均滤波特点的混合滤波方法
2024-11-05
递推平均滤波法是一种简单而有效的滤波方法,通过计算一段时间内的数据平均值来平滑数据,达到滤波的目的
2024-11-05
算术平均滤波法作为一种简单而有效的信号处理技术,常被用于去除数据中的随机噪声,从而提高数据的准确性和可靠性
2024-11-05
中位值滤波法,作为一种非线性滤波方法,能够有效去除信号中的噪声,尤其适用于处理脉冲噪声或随机噪声
2024-11-05
限幅滤波法,又称程序判断滤波法,其基本原理是将输入信号限制在一个预先设定的范围内
2024-11-05
stm32 使用J-Link RTT Viewer打印日志
2024-10-26
STM32中Printf函数重定向的实现与应用
2024-10-26
XGZP6859D压力传感器模块:规格书解读与应用实例
2024-10-24
电子工程:TI电流检测放大器INAx180的技术资料
2024-10-24
电子通信领域:UART接口与I2C总线控制器的应用 - SC18IM700芯片详细介绍
2024-10-24
汽车级2线串行EEPROM (AT24C01B/02B/04B/08B) 数据手册
2024-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人