- 博客(63)
- 资源 (8)
- 收藏
- 关注
原创 单片机FreeRTOSTickless低功耗模式应用示例
2.家庭自动化设备家庭自动化设备如智能灯泡、恒温器等,通常在大部分时间内处于等待状态,只有在接收到控制信号或环境条件变化时才需要响应。例子:一个无线传感器节点在发送完数据包后,可以进入低功耗模式,直到接收到新的数据包或定时器到期。这些设备在不进行测量时可以进入低功耗模式,以延长电池寿命。例子:一个心率监测器在完成一次测量后,可以进入低功耗模式,直到下一次测量周期或用户触发测量。Tickless低功耗模式在很多需要延长电池寿命或减少能耗的场景中非常有用,特别是在那些大部分时间处于空闲状态的系统中。
2025-04-09 14:57:15
146
原创 单片机领域中哈希表
• 数据缓存:在需要频繁读取某些数据的场景中,可以使用哈希表作为缓存,将数据的键值对存储在哈希表中,减少对存储器的访问次数,提高数据读取速度。使用哈希表可以快速地将命令字符串映射到对应的处理函数,提高命令解析的效率。• 字符串匹配:在一些需要进行字符串匹配的场景中,如搜索特定的字符串模式,可以利用哈希表快速定位和匹配字符串。• 哈希函数:使用简单的字符串哈希算法,将命令字符串映射到哈希表的索引。• 执行命令:根据输入的命令字符串,在哈希表中查找对应的处理函数并执行。2.单片机中哈希表的编程实例。
2025-04-09 12:06:21
84
原创 编码二进制表示
2.使用十六进制或八进制表示如果编译器不支持二进制常量,可以使用十六进制或八进制来表示二进制数。总结在单片机C语言编程中,表示二进制数的方式取决于编译器的支持和具体需求:• 如果编译器支持二进制常量(如。• 这种方式通过宏定义将二进制数映射到十六进制常量,便于理解和使用。5.使用字符串表示(仅用于显示)如果需要在程序中显示二进制数,可以将二进制数转换为字符串。1.使用二进制常量(部分编译器支持)一些现代的C语言编译器(如GCC)支持二进制常量的直接表示。4.使用宏定义可以使用宏定义来表示二进制数。
2025-03-28 22:49:11
198
原创 格雷码和汉明码的详细总结
二、汉明码(Hamming Code)(一)定义汉明码是一种线性纠错码,由理查德·汉明于1950年发明。(三)编码和解码方法1.编码1. 确定校验位数量:根据公式(2^r-1\geq k+r),其中(k)是数据位数,(r)是校验位数。一、格雷码(Gray Code)(一)定义格雷码是一种特殊的二进制编码方式,其特点是相邻的两个码字之间只有一个位不同。• 汉明码主要用于检测和纠正数据传输中的错误,广泛应用于计算机存储、通信系统和网络协议中,能够有效提高数据的可靠性和传输效率。2.解码(格雷码转二进制)
2025-03-28 22:45:14
215
原创 格雷码、汉明码,CRC校验的区别
• 特点:• 最小汉明距离为3,能够纠正单个错误或检测两个错误• 属于完美码,填充半径等于覆盖半径。• 检测能力强,特别是对偶数个比特错误非常敏感• 计算复杂度较高,但可以通过查表法优化。• 定义:汉明码是一种线性纠错码,通过添加冗余位(校验位)来检测并纠正单个比特错误。• 定义:CRC校验是一种基于多项式除法的错误检测码,通过生成多项式计算校验码。格雷码、汉明码和CRC校验都是用于数据传输和存储中的编码技术。• 检测多个比特错误,包括单比特错误、双比特错误、奇数位翻转等。1.格雷码(Gray Code)
2025-03-28 22:41:44
264
原创 RD报文解码/GBK字符串报文解码
C语言代码循环输入北斗RD报文解码。用户可以持续输入16进制字符串进行解码,直到输入特定的退出指令(例如输入“exit”)。说明:循环输入:• 使用while (1)创建一个无限循环,持续接收用户输入。• 用户输入"exit"时,程序退出循环并结束。输入检查:• 使用strcmp检查用户是否输入了"exit"。• 检查输入字符串的长度是否为偶数(因为每两个字符表示一个字节,长度必须是偶数)。解码并输出:• 调用decode_gbk函数将输入的16进制字符串解码为GBK字符串。• 输出解码后的字符串。
2025-03-25 08:56:28
252
原创 基线定位系统:长基线与超短基线的原理与应用
在测量、导航、天文等领域,基线是两个已知位置之间的距离或方向,常用于三角测量、卫星定位等方法来确定其他位置的相对关系。本文将深入探讨长基线(Long Baseline, LBL)与超短基线(Ultra-Short BaseLine, USBL)定位系统的原理、特点及应用。基线是参照点之间的已知距离或方向,作为基础数据,帮助确定其他未知位置。它通常用于通过几何方法进行定位、测量或计算。在不同的领域,基线的长度、方向和精度等因素会直接影响测量结果的准确性和可靠性。长基线是指两个测量点之间的距离较长的基线。在一些
2025-03-21 22:29:54
1158
原创 北斗设备启动流程与时长解析
现代北斗设备通常支持多系统的卫星信号接收,除了北斗信号外,还可以接收GPS、GLONASS等其他卫星导航系统的信号。随着GNSS技术的发展,北斗设备的性能不断提升,能够为用户提供更快速、更准确的定位服务。通过复杂的算法,设备会根据卫星信号的到达时间和卫星的位置信息,计算出自身的位置坐标。在这种情况下,设备需要重新下载卫星的星历数据(卫星的轨道参数等信息),因此启动时间相对较长。未来,随着技术的进一步发展,北斗设备的启动速度和定位精度有望进一步提升,为更多行业带来便利和价值。一、北斗设备的启动流程。
2025-03-21 19:13:47
449
原创 星型拓扑网络原理、图传模块架构与路由NAT需求探讨
• 路由协议:如果整个网络的结构只是简单的星型拓扑,且所有通信都通过中心节点,网络内的路由协议(例如RIP、OSPF等)并不是必需的,因为数据流量从STA设备到中心节点的路径是固定的。• 是否需要NAT:• 如果所有设备(如STA节点和中心节点)都在同一局域网内,并且通过内部的无线网络或局域网直接通信,那么通常不需要NAT,因为它们的IP地址是在局域网内分配的,通信不会穿越外部网络。数据通过中心节点转发,网络内的通信是直接的,IP地址分配通过DHCP(动态主机配置协议)进行,无需复杂的路由或NAT。
2025-03-20 23:12:36
1347
原创 LoRaWAN技术解析
LoRaWAN(Long Range Wide Area Network)是一种基于 LoRa(Long Range)技术的低功耗广域网络协议,专为物联网(IoT)设备的无线通信而设计。它是一种开放的、标准化的通信协议,支持大规模的设备连接,适用于各种物联网应用,特别是那些需要长距离通信和低功耗的场景。
2025-03-20 22:59:22
1215
原创 图传模块或者桥接
5.大范围无线覆盖:在某些环境中,如果原有的图传信号覆盖范围不够,使用桥接可以帮助连接多个图传模块或无线设备,从而形成更大的网络覆盖范围。图传模块带桥接通常指的是通过图像传输(图传)模块实现无线图像或视频数据传输的同时,利用桥接技术扩展网络覆盖范围或实现不同网络之间的连接。3.无人机:无人机图像传输系统可以利用无线桥接将无人机的视频信号传输到地面站,甚至跨越大范围的障碍物,提供更远距离的图像传输。1.扩展覆盖范围:通过无线桥接将两个图传模块之间的信号范围进行扩展,使得图像传输不再受限于单个网络的覆盖。
2025-03-20 07:48:21
156
原创 星型组网和路由器组网的区别
星型组网侧重局域网内设备的连接与通信,而路由器组网则更侧重于局域网与外部网络的连接与管理。20.路由器组网除了承担局域网内的设备通信功能外,还涉及到将局域网与外部网络(如互联网)连接,并进行数据转发和路由。25.路由器组网中的路由器也可以构成局域网的一部分,它连接局域网内的设备并将它们与互联网等外部网络连接。6.局域网:星型组网通常构成局域网,所有的设备都在一个中心控制的范围内,相互通信通过中心设备完成。16.星型组网的重点是设备如何通过中心设备(如AP或交换机)连接在一起,主要构建局域网内部的网络。
2025-03-19 09:28:21
613
原创 用MESH搭建网络架构,用图传模块搭建网络架构
5.路由 (Routing):路由是指在网络中,通过路由器或网关设备来转发数据包,从一个网络到另一个网络。无线路由器通常结合了AP和路由功能,它不仅提供无线接入,还通过WAN接口与外部网络(如互联网)连接。4.桥接 (Bridge):无线桥接通常指通过无线信号将两个或更多的AP连接在一起,形成一个更大的网络覆盖区域。桥接模式允许一个AP与另一个AP之间通过无线连接传输数据,从而实现网络的扩展,通常用于覆盖范围广的场所。在这种拓扑结构中,AP充当网络的中心,所有的通信都通过AP来完成。
2025-03-19 09:25:23
164
原创 星型拓扑网络发生网络风暴
如果出现网络风暴,中心设备(如交换机)需要处理所有的流量,这可能导致设备的CPU和内存资源过载,造成网络性能下降,甚至导致设备崩溃或重启。5.集线器的影响:如果网络中使用的是集线器(Hub),它会将接收到的数据广播到所有端口,从而使广播风暴更加严重。6.局部影响:由于星型拓扑的中心设备负责所有数据转发,发生风暴时,风暴会影响到所有通过该设备的设备。所有的通信都将被阻塞,直到网络风暴被解决。2.过载:如果发生大量的广播或多播流量,交换机或集线器的带宽可能会被耗尽,导致其他设备的通信延迟增加,甚至瘫痪。
2025-03-19 09:22:40
249
原创 LoRa数传、点对点通信、Mesh网络、ZigBee以及图传技术的区别和特点
以下是LoRa数传、点对点通信、Mesh网络、ZigBee以及图传技术的区别和特点:1.LoRa数传• 特点:LoRa是一种基于扩频技术的低功耗广域网(LPWAN)通信技术,具有传输距离远(城市环境可达2-5公里,乡村环境可达15-30公里)、功耗低、抗干扰能力强等特点。• 应用场景:适用于物联网设备的数据传输,如智能水表、智能电表、环境监测等。• 网络结构:支持点对点、星型、树型和Mesh等多种拓扑结构。2.点对点通信• 特点:点对点通信是最简单的无线通信方式,通常用于两个设备之间的直接通信。LoRa在点
2025-03-15 23:36:13
440
原创 mesh开发解析
• 特点:• 支持低功耗设备。1.使用支持Mesh功能的协议或框架• B.A.T.M.A.N.(Better Approach to Mobile Ad-hoc Networking):这是一个专为无线和有线网络设计的Mesh协议,可以通过软件实现的方式运行在以太网设备上,支持动态路由和多跳网络。1.B.A.T.M.A.N.(Better Approach to Mobile Ad-hoc Networking)• 简介:B.A.T.M.A.N.是一种用于多跳自组织网络的路由协议,适用于无线Mesh网络。
2025-03-15 23:32:59
461
原创 MESH网络技术解析
5.传输距离和范围• Mesh网络:• 传输距离和范围灵活:根据应用场景和节点的部署,可以覆盖从几十米到数千米的范围。• Mesh网络:是一种更广泛的概念,指一种分布式、网状的网络拓扑结构,可以应用于多种场景,包括无线网络、有线网络、物联网、工业网络等。它强调的是网络的架构和拓扑形式,即通过多个节点组成的多跳网络,实现数据的高效传输和网络的高可靠性。Mesh WiFi可以看作是Mesh网络在无线家庭网络领域的一个子集,它继承了Mesh网络的核心优势,同时针对家庭用户的需求进行了优化。
2025-03-15 23:30:56
473
原创 嵌入式开发-多主机端口如何使用哈希表或多级映射优化轮循
如果每次都要通过循环查找匹配的主机和端口,效率确实会比较低,尤其是在主机和端口数量较多的情况下。为了避免每次调用时都进行循环查找,可以使用一种更高效的数据结构来存储主机和端口的映射关系,比如或。以下是一个优化方案,使用或。
2025-03-14 21:48:30
720
原创 AArch64架构及其编译器
1.关于AArch64架构AArch64是ARMv8-A架构的64位执行状态,支持高性能计算和大内存地址空间。它广泛应用于现代处理器,如苹果的A系列芯片、高通的Snapdragon系列,以及服务器和嵌入式设备。• 编译器:可以使用GCC、Clang等编译器编译AArch64代码。这条命令使用Clang将input.c编译为AArch64架构的可执行文件output。
2025-03-08 23:17:54
1468
原创 出现“ping不通但可以远程连接”的情况可能由以下原因导致
• 解决方案:检查远程连接协议的配置,确保其正常工作。• 原因:防火墙或安全软件可能阻止了ICMP数据包(ping使用的协议),但允许了远程连接所需的协议(如TCP)。• 原因:网络设备(如路由器、交换机)的配置错误或故障可能导致ICMP数据包无法正常传输,但远程连接协议不受影响。• 原因:网络中可能存在链路故障或路由配置错误,导致ICMP数据包无法到达目标设备,但远程连接协议的路径仍然畅通。• 原因:某些设备或网络环境可能对远程连接协议(如RDP、SSH)进行了特殊优化或配置,使其能够绕过某些网络限制。
2025-03-08 23:05:46
307
原创 关于Buildroot和menuconfig
Buildroot 与 menuconfig 的关系Buildroot 是一个用于构建嵌入式 Linux 系统的自动化工具,而。,用户可以方便地选择和定制嵌入式系统的各个组件(如目标架构、工具链、软件包、文件系统等),并生成配置文件(,用户可以灵活定制系统组件,生成配置文件,从而实现高度定制化的嵌入式 Linux 系统构建。自动化构建:用于生成嵌入式 Linux 系统的工具链、内核、文件系统和应用程序。高度定制化:通过配置文件和脚本支持灵活的系统定制。),从而指导 Buildroot 的构建过程。
2025-03-08 23:03:47
318
原创 嵌入式领域常用编译器深度解读
编译器: 对于 STM32 平台,ArduPilot 和 PX4 都使用 GNU ARM GCC(arm-none-eabi-gcc)作为主要编译器。开发工具链: 这两个项目都可以在 Linux 系统中使用相应的开发环境(如 PlatformIO 或 STM32CubeIDE)进行编译、调试和部署。
2025-02-22 22:19:40
1095
原创 代码编译(词法义)
1.预处理 (Preprocessing):在这个阶段,编译器会处理所有以 # 开头的指令,如 #include、#define 等。它会把头文件的内容插入到源代码中,进行宏替换等预处理操作,生成一个纯净的代码文件。3.词法分析 (Lexical Analysis):预处理完成后,源代码会被分解为基本的词法单位(tokens),如变量名、关键字、运算符等。编译器将这些词法单位传递给语法分析阶段。5.语法分析 (Syntax Analysis):语法分析器会检查词法单位的顺序是否符合语言的语法规则。这一
2025-02-22 21:44:19
237
原创 字节对齐,内存分配连续性深度解析
字节对齐(Byte Alignment)和内存空间的连续性是两个相关但独立的概念。它们在内存管理和数据存储中都有重要作用,但关注的焦点不同。
2025-02-22 21:17:40
1118
原创 水下双目测距技术:原理、修正与动态标定
通过激光测距仪辅助标定、深度学习增强图像处理以及多传感器融合等技术,水下双目测距系统在复杂水下环境中表现出了更高的鲁棒性和精度。通过激光测距仪与双目相机结合,建立二者的位置关系,利用激光测距仪的高精度测量值校正双目相机的初始标定参数。在目标位姿估计方面,Li等人使用改进的YOLO-T算法获取目标物体的精确轮廓,并结合特征点排序算法进行定位,避免了人工标记。研发的水下双目视觉测量软件已集成于水下机器人(ROV),并应用于水利与海洋工程的检测任务中,达到了国际领先水平。五、水下双目测距的挑战与解决方案。
2025-02-20 18:35:23
398
原创 信号接收机笔记
@TOC通信过程学习记录smart tip频域分析法的好处:1)从系统的角度出发来看,我们很容易通过频域看出,系统对信号做了怎样的手脚(具体来说,就是,系统对信号各个频率分量做了怎样的处理)。2)通过数学工具对信号进行分析,我们发现这个过程:频域处理比时域处理更简洁,是因为,时域处理每个冲激函数时是用更为复杂的h(t)的平移并且加权来代替一个那么简单的冲激函数;而在频域,处理每一个固定频率...
2025-02-17 12:25:39
360
1
原创 深入探讨 C++ 中 std::getline 的函数重载与应用
std::getline 是通过函数重载实现的,而不是函数模板。它提供了两个不同的函数签名来处理不同的参数,使得函数可以根据传入参数的不同执行不同的操作。std::getline 可以输入两个参数或者三个参数,这取决于你是否需要指定一个自定义的分隔符。如果没有指定分隔符,它默认使用换行符作为输入的结束标志。
2025-02-16 21:45:23
274
原创 C/C++ 和 Python 中的字符串分割与拼接技巧
本文介绍了在 C/C++ 和 Python 中实现字符串分割和拼接的不同方法。这些方法各有优缺点,可以根据具体的需求和上下文选择最适合的方法。无论是处理简单的分隔符还是复杂的模式,这些技巧都能帮助你高效地处理字符串数据。
2025-02-16 21:38:29
352
原创 嵌入式计算机内存分类与嵌入式计算机内部组成
3.顺序存储器(Sequential Access Memory, SAM):数据存储在顺序方式中,访问数据时需要按顺序读取,不能随机访问,典型的例子是磁带。6.控制单元(CU,Control Unit):控制计算机的操作,解释并执行指令,协调各个部分的工作,控制程序流程。常见的有动态随机存储器(DRAM)和静态随机存储器(SRAM)。1.直接存储器(Direct Access Storage, DAS):即直接访问存储器,支持直接按位置访问存储单元中的数据,常见的如硬盘、固态硬盘(SSD)等。
2025-02-13 13:53:44
286
原创 GD32F4xx微控制器中的RAM类型及其基地址详解
本文详细介绍了GD32F4xx微控制器中的各种RAM类型及其基地址,包括内部SRAM、外部SRAM、外部SDRAM以及特殊用途的RAM。了解这些存储器的基地址对于嵌入式系统开发至关重要,因为它们决定了如何访问和操作这些存储器区域。了解GD32F4xx微控制器中各种RAM的基地址对于嵌入式系统开发至关重要。这些基地址不仅决定了如何访问和操作存储器区域,还影响着系统的内存管理策略。通过合理配置和使用这些存储器资源,可以充分发挥GD32F4xx微控制器的性能,满足不同应用场景的需求。
2025-02-12 22:33:13
358
原创 GD32F4xx微控制器扩展外部SRAM并用作运行空间的详细指南
本文详细介绍了如何在GD32F4xx微控制器上扩展外部SRAM,并将其用作代码的运行空间。我们将通过硬件连接、GPIO初始化、EXMC初始化、地址空间映射、数据搬运和运行代码等步骤,实现外部SRAM的扩展和使用。通过以上步骤,你可以成功扩展外部SRAM,并将其用作运行空间。具体步骤包括硬件连接、GPIO初始化、EXMC初始化、地址空间映射、数据搬运和运行代码。如果需要在外部SRAM中运行代码,还需要编写Bootloader程序来完成代码搬运和跳转。
2025-02-12 22:29:55
493
原创 Linux内核源码中不同架构的链接脚本文件
这个文件包含了ARM64架构下内核镜像的链接脚本,定义了内核的内存布局,包括代码段、数据段等的放置位置。这些链接脚本文件定义了内核镜像的内存布局,包括代码段、数据段等的放置位置。这个文件包含了通用的链接脚本定义,它被架构特定的链接脚本文件所包含。这个文件定义了内核镜像的内存布局,包括代码段、数据段等的放置位置。可以在内核源码目录下使用find命令进行搜索。
2025-02-12 21:43:50
129
原创 格式化字符串的语法
是一种格式化字符串的语法,通常用于编程语言中,比如 Python、C 等。它的作用是将一个浮点数格式化为指定的格式。1:表示该数字至少要占用 1 个字符宽度。如果数字本身长度小于 1,会用 0 填充到 1 个字符宽。至少占用 1 个字符宽度,但由于 3.142 已经超过了 1 个字符宽,所以不会用 0 填充。这种格式化方式在不同的编程语言中可能会有一些细微的差别,但基本原理是类似的。如果数字是 0.1,格式化后为 0.100,小数点后补足了 3 位小数。0:表示如果数字不足指定的宽度,用 0 来填充。
2025-02-12 21:21:38
182
原创 即使没有MMU,GD32F470系列微控制器也能有效地管理内存。内存布局、堆和栈的分配以及硬件和软件在嵌入式系统中的作用
GD32F470系列微控制器的内存映射是通过硬件(如地址空间划分)和软件(如链接脚本和启动代码)结合的方式完成的。这种配置允许开发者根据应用需求灵活地分配和管理内存资源。通过这种方式,即使没有MMU,GD32F470系列微控制器也能有效地管理内存,满足嵌入式应用的需求。
2025-02-12 21:11:06
295
原创 在GD32F470微控制器中,将中断向量表地址设置为SDRAM的起始地址(如0xC0000000)的原因
将中断向量表地址设置为SDRAM的起始地址是为了确保程序在SDRAM中运行时,处理器能够正确地找到中断服务例程。这是因为在Cortex-M内核中,中断向量表的地址决定了中断处理的入口点,而这个入口点必须与程序的实际运行位置一致。
2025-02-12 20:57:02
177
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人