- 博客(470)
- 资源 (55)
- 收藏
- 关注
原创 蓝牙协议栈 之 SDP(Service Discovery Protocol)详解
摘要:蓝牙SDP协议是经典蓝牙(BR/EDR)的核心服务发现协议,位于L2CAP层之上,负责动态发现设备服务信息。其采用客户端-服务器模型,通过服务记录(ServiceRecord)存储服务属性,使用UUID标识服务类型。交互流程包含ServiceSearch、ServiceAttribute等PDU类型。相比BLE的GATT机制,SDP能耗较高但适用于音频传输等场景。开发时需注意安全性和性能优化,可使用Android/Linux提供的SDP接口。双模设备需同时支持SDP和GATT两种发现机制。
2026-03-16 09:55:00
13
原创 蓝牙协议栈 之 L2CAP(逻辑链路控制与适配协议,Logical Link Control and Adaptation Protocol)
L2CAP协议摘要:L2CAP是蓝牙协议栈中的逻辑链路控制层,位于HCI之上,负责信道复用、数据分片重组和流控。核心概念包括CID(信道标识)、PSM(协议标识)及SDU/PDU等数据单元。工作模式分为Classic(含Basic/ERTM/Streaming)和BLE(固定信道+CoC动态信道),后者采用信用流控机制。关键实践包括合理设置MTU/MPS、信用管理、安全权限控制及流控优化。调试时需关注HCI/L2CAP信令交互及错误码,常见问题多为流控不当或参数配置错误。开发建议根据场景选择RFCOMM、G
2026-03-06 12:00:22
739
原创 FFMPEG之完整编译指南
本文详细介绍了FFmpeg的跨平台编译指南,涵盖Linux、macOS、Windows、Android和iOS等系统。内容包括:1)版本选择与许可证注意事项(LGPL/GPL/Nonfree);2)通用准备工作与环境变量设置;3)常见依赖库安装方法;4)各平台具体构建步骤与硬件加速配置;5)验证与调试技巧;6)体积与性能优化方案;7)常见错误解决方法。文章提供了从最小化构建到"全能"配置的多种编译模板,并特别强调了不同许可证下的使用限制,为非专业开发者提供了全面的FFmpeg编译参考。
2026-03-06 10:56:39
450
原创 FFmpeg之嵌入式移植技术文章与资源汇总
本文整理了FFmpeg官方资源与嵌入式编译配置指南。官方资源包括编译指南、配置文档和源码仓库。重点提供了一个嵌入式Linux系统的精简配置示例,针对ARMv7架构进行优化,仅启用H.264/MJPEG/AAC/MP3等必要解码器和协议,禁用调试工具、文档等非必要组件,使用静态链接并开启优化选项(-Os),适用于资源受限的嵌入式环境。该配置通过交叉编译工具链构建,可显著减小生成库的体积。
2026-03-06 10:35:36
74
原创 蓝牙协议栈(5)之蓝牙 HCI 接口详解
本文系统介绍了蓝牙主机控制器接口(HCI)的核心内容。HCI作为Host与Controller间的标准接口,定义了命令、事件和数据包三类交互方式。文章详细解析了HCI包格式、流控机制、常用命令及事件,重点阐述了BLE和Classic蓝牙的关键操作流程,并提供了LEAudio的实现要点。同时涵盖了UART/USB等传输层细节、调试方法、常见问题解决方案,以及Host侧移植的最小实现清单。通过三个典型用例演示了HCI的实际应用,为蓝牙协议栈开发提供了全面的技术参考。
2026-03-03 16:37:53
224
原创 蓝牙协议栈(4)——BTstack
BTstack是一个轻量级蓝牙协议栈开源项目,采用事件驱动架构,支持BLE和Classic蓝牙。代码结构清晰,包含HCI核心、L2CAP、GATT/ATT、SMP等核心模块,以及RFCOMM、A2DP等Classic协议实现。其特点包括:1)事件驱动模型,通过回调处理协议事件;2)can-send-now机制确保数据发送安全;3)单线程RunLoop管理事件循环;4)模块化设计,可灵活裁剪功能。项目提供了丰富的示例代码和移植层,支持多种硬件平台。开发时需注意HCI传输稳定性、资源池配置、SMP配对等关键点,
2026-03-02 18:25:09
99
原创 蓝牙协议栈详解(3)——BTstack
BTstack是一个轻量级蓝牙协议栈,支持经典蓝牙(BR/EDR)和低功耗蓝牙(BLE)。它采用事件驱动模型,可运行在MCU/CPU上,通过HCI接口与蓝牙控制器通信。协议栈包含完整的蓝牙协议层支持,如L2CAP、RFCOMM、ATT/GATT等,并提供丰富的示例代码。 主要特点包括模块化设计、开源授权、支持多种HCI传输方式(UART/USB)和操作系统适配。开发时需要关注事件驱动编程模型、内存配置优化、HCI传输稳定性等问题。典型应用场景包括SPP串口通信、BLE外设开发等。 使用建议从最小示例开始,逐
2026-03-02 17:38:30
60
原创 蓝牙协议栈(2)——蓝牙底层协议栈移植需要掌握哪些知识?
本文系统介绍了蓝牙协议栈移植的关键技术要点,从明确移植边界到具体实施流程。主要内容包括:1)明确移植范围(Host层或Host+Controller);2)必备协议规范(BLE/Classic架构、关键协议);3)主机侧移植工程知识(HCI驱动、OS适配等);4)控制器移植注意事项;5)测试工具链与常见问题规避;6)建议的移植落地流程(从功能定义到产测验证)。文章为开发者提供了从理论到实践的完整移植指南,涵盖了协议栈选择、硬件适配、性能优化等核心环节,并推荐了相关学习资源。
2026-03-02 16:52:05
129
原创 蓝牙底层协议栈详解
按从下到上的层级组织,并区分 Classic(BR/EDR)、BLE(Low Energy)与 LE Audio 的关键差异、数据路径与常用参数。读完可直接用于方案选型、调试与优化。
2026-03-02 15:26:01
200
原创 Vue3+tyepescript+ElementPlus+Axios前端技术栈
本文介绍了Vue3+ElementPlus+Axios技术栈组合。Vue3作为最新的渐进式JavaScript框架,提供CompositionAPI和响应式系统;ElementPlus是为Vue3设计的桌面端组件库,支持按需引入;Axios是用于HTTP请求的Promise客户端。重点演示了ElementPlus的两种引入方式:完整引入和推荐使用的按需引入(通过Vite插件配置实现),并展示了基本组件的使用方法。该技术栈组合适合构建现代化、响应式的Web应用前端架构。
2025-11-11 11:33:25
823
原创 spring boot入门篇之开发环境搭建
首先是添加系统变量,系统变量中新建一个,变量名为JAVA_HOME,变量值为JDK的安装路径。我这里下载安装的是最新版本JAVA SE 25。然后在用户变量中的path中添加。二、下载和安装Maven。
2025-10-30 19:06:10
588
1
原创 鼠标报告描述符与对应的数据结构体
摘要:现代游戏鼠标的核心参数包括光学/激光传感器(DPI 100-26,000可调)、高轮询率(最高8000Hz)和高速追踪(750 IPS)。机械结构采用欧姆龙/光微动(2000万次寿命)、轻量化设计(<60g)及可编程按键。软件支持多档DPI调节、RGB同步灯效和宏编程。人体工学设计针对不同握持方式优化,无线技术延迟<1ms。典型产品如罗技G Pro X(63g/25K DPI)和雷蛇毒蝰V2 Pro(58g/30K DPI),价格150美元左右,通过固件优化提升性能。
2025-06-16 18:56:50
309
原创 dsp指令集是什么?有哪些常用的DSP指令?
DSP指令集是为数字信号处理器优化的专用指令集合,核心特点是高效乘加运算(MAC)、专用寻址模式(循环/位反转)和并行计算支持(SIMD/VLIW)。相比通用CPU指令集,DSP指令集强化信号处理能力,提供硬实时性和低延迟,典型应用于雷达、5G基带等场景。常用指令包括MAC运算、饱和指令、循环寻址、零开销循环等,通过专用硬件加速滤波、FFT等算法。典型架构如TI TMS320系列、ADI SHARC等,通过指令级并行和算法适配显著提升性能与能效比。
2025-06-16 11:43:22
1713
原创 nRF Connect SDK开发之(2)编译一个例程
出现这个错误是因为没有匹配到这个板子的dts设备树,即C:\ncs\v3.0.0\nrf\boards\nordic文件夹下没有编译工程对应的板级配置。出这种问题主要是因为Toolchain未正确安装导致的,重新尝试安装Toolchain即可。一、添加编译的toolchain路径失败,提示如下。
2025-05-27 18:59:00
321
原创 esp32+IDF V5.1.1版本编译freertos报错
error: 'portTICK_RATE_MS' undeclared (first use in this function); did you mean 'portTICK_PERIOD_MS
2025-05-24 18:08:14
722
原创 nRF Connect SDK开发之(1)运行一个Zephyr Project例程
在编译SDK例程时,遇到Python版本不兼容的错误,提示python312.dll与当前Python版本冲突。解决方法是安装Python 3.12版本,并通过pip3 install west安装west工具,使用west --version检查安装是否成功。若失败,需先卸载west再重新安装。此外,更新时出现[west]: update failed for projects: matter, cmock错误,表明SDK包中缺少matter和cmock功能包,需重新下载完整SDK包以解决问题。
2025-05-22 16:57:40
364
原创 C语言中滤波算法有哪些?
在C语言中实现滤波算法是信号处理和数据分析中的常见任务,主要用于去除噪声或提取有用信号。本文介绍了三种常用的滤波算法及其C语言实现:1. 移动平均滤波器:通过计算数据点的局部平均值来平滑时间序列数据,减少随机变异性。2. 加权移动平均滤波器:在移动平均的基础上,赋予不同数据点不同的权重,更重视近期数据。3. 中值滤波器:通过替换信号中的每个样本值为其邻域内的中位数,有效去除椒盐噪声。每种算法均提供了详细的C语言代码示例,展示了如何在实际数据中应用这些滤波器。
2025-05-20 17:21:52
297
原创 nRF Connect SDK开发之(1)环境搭建
本文介绍了如何安装nRF Connect SDK开发环境。首先,需要安装Git、Python和J-Link工具。接着,安装nrfutil,并将其所在目录添加到系统路径PATH中,通过命令行检测其运行状态,并列出可用命令。然后,安装device、toolchain-manager和trace等组件。此外,还需安装nRF Command Line Tools和Visual Studio Code。这些步骤为开发nRF Connect SDK应用程序提供了必要的工具和环境。
2025-05-20 16:17:06
753
原创 visual studio code中的插件都是怎么开发的?用的什么编程语言?
开发VSCode插件主要使用JavaScript或TypeScript,后者因其类型系统和编译时检查而更受青睐。开发步骤包括设置环境(安装Node.js、npm、VSCode)、使用Yeoman和VSCode Extension Generator生成项目结构、编写插件功能(通常在src/extension.ts文件中)、调试插件(通过VSCode的调试支持)以及发布插件(使用vsce工具)。学习资源包括VSCode官方文档和GitHub上的其他插件项目。通过这些步骤和资源,开发者可以创建并分享自己的VSC
2025-05-19 15:12:33
605
原创 PAW3950DM-T5QU游戏级光导航芯片
PixArt Imaging推出的PAW3950DM-T5QU是一款专为高端游戏设计的低功耗导航芯片,具备在玻璃表面进行精准操作的能力。该芯片采用16针DIP封装,内置照明光源,支持高速、高分辨率和高精度的运动检测,最高可达30,000 CPI。其特色功能包括自动表面切换、升降检测、可编程性及多种模式(游戏、玻璃、办公室等),确保在不同环境下提供最佳性能。此外,芯片支持手动升降截止校准、角度捕捉和自调整帧率,适用于职业玩家和休闲用户,提供卓越的游戏体验。
2025-05-19 10:40:55
668
原创 SiFli-SDK 编译
Python3.x中不再支持iteritems(),所以将iteritems()改成items(),即。出现这个错误是没有正确进入到工程目录执行编译命令,例如应该进入project目录中。open函数中添加 encoding='utf-8'
2025-05-15 22:53:53
572
原创 详解 Zephyr RTOS:架构、功能与开发指南
Zephyr RTOS 是一个开源的实时操作系统,专为资源受限的嵌入式系统设计,广泛应用于物联网设备、可穿戴设备和工业自动化等领域。其核心特性包括轻量级和可扩展性、实时性能、多平台支持、安全性以及活跃的社区和生态系统。Zephyr 的架构由内核、驱动模型、网络栈和文件系统组成,支持微内核和单一内核模式,提供统一的驱动模型和高度模块化的网络栈。开发环境支持跨平台工具链,使用 CMake 和 Ninja 构建系统,开发流程涵盖应用程序开发、调试测试和部署。Zephyr RTOS 凭借其高效、安全和可靠的特性,成
2025-05-15 10:32:05
1154
原创 嵌入式gcc编译生产的.d 和 .o文件是什么文件?
在嵌入式开发中,GCC编译器生成的.o文件和.d文件对编译和链接过程至关重要。.o文件是源代码编译后的目标文件,包含机器代码但未链接,用于封装代码、提高编译效率和准备链接。.d文件则记录源文件的依赖关系,特别是头文件,帮助自动化管理依赖和优化构建过程。理解这两种文件的作用,可以显著提升嵌入式系统开发的效率和可靠性。
2025-05-12 15:05:37
1013
原创 SEGGER Embedded Studio 如何将其中的一个c文件 打包成静态库?
在SEGGER Embedded Studio中创建静态库的步骤包括:首先,通过菜单栏创建一个新的静态库项目,并指定项目名称和存储位置。接着,将所需的C文件添加到项目的Source Files文件夹中,或创建新的C文件。然后,通过项目选项配置正确的目标和编译器设置,并检查编译器和链接器的配置。完成配置后,点击Build按钮编译项目,成功编译后静态库文件将生成在输出目录中。最后,要在其他项目中使用该静态库,需将库文件和头文件添加到目标项目中,并在链接器设置中引用库文件。在整个过程中,确保所有依赖和接口声明正确
2025-05-12 14:16:26
406
原创 超详细wordpress建站流程 从开始搭建开发环境说起
搭建WordPress网站的过程包括开发环境的搭建、WordPress的安装、主题和插件的选择、网站的自定义、测试以及最终的发布。首先,需要在本地安装服务器软件(如XAMPP、WAMP或MAMP),并配置好Apache、MySQL和PHP环境。接着,下载并安装WordPress,创建数据库,并通过浏览器完成WordPress的安装。之后,可以在WordPress后台选择主题和插件,自定义网站的外观和功能。在本地环境中测试网站后,选择一个支持WordPress的托管服务,将网站文件上传到服务器,并配置域名和数
2025-05-09 15:39:58
799
原创 stm32F103芯片 实现PID算法控制温度例程
在STM32F103芯片上实现PID算法控制温度的简化例程包括硬件和软件配置。硬件需求包括STM32F103开发板、温度传感器(如DS18B20)、加热元件和MOSFET。软件需求包括STM32CubeMX和Keil uVision或STM32CubeIDE。步骤包括:1) 使用STM32CubeMX配置时钟、ADC或通信接口及PWM通道;2) 在IDE中添加PID控制逻辑,包括PID参数设置和计算函数;3) 编译并烧录代码到开发板;4) 测试并调整PID参数以优化性能。注意事项包括确保电路连接正确和温度传
2025-05-09 15:18:27
522
原创 nrf52832 蓝牙一主多从的实现
在使用 Nordic Semiconductor 的 nRF52832 芯片实现蓝牙一主多从功能时,您需要使用 Nordic 提供的开发工具包和蓝牙协议栈。以下是详细的实现步骤和关键代码示例,基于最新的和。
2025-05-08 15:02:10
794
原创 CJSON完全指南:3大核心技巧+5个实战代码,让你的C语言JSON处理效率翻倍!
CJSON完全指南:3大核心技巧+5个实战代码,让你的C语言JSON处理效率翻倍!
2025-04-29 16:46:52
304
原创 经典蓝牙A2DP协议详解:无线音频传输的核心密码
明确Source(源设备)与Sink(接收设备)的分工最新蓝牙5.3标准下,A2DP理论传输距离可达100米,码率上限提升至990kbps。
2025-04-20 13:52:56
842
原创 GitHub开源项目esp32小智AI语音代码详解
是基于ESP32的低成本智能语音助手项目,支持本地语音唤醒、AI对话、设备控制等功能,核心目标是通过开源代码实现端侧AI交互的快速开发。
2025-04-16 18:14:59
4036
原创 嵌入式内存区域ILM、DLM 和 AHB_SRAM,你了解多少?
ILM:用于存储程序指令(代码)。DLM:用于存储数据(如变量、堆栈)。AHB_SRAM:高速缓存内存,通常用于临时数据存储和高频访问。如果你遇到内存不足问题,通常可以通过优化固件、合理配置内存布局、禁用不必要的功能或升级 MCU 来解决问题。如果你能提供更多详细信息(如使用的 MCU 型号和编译日志),我可以帮助你进一步诊断问题。
2025-03-27 14:28:13
856
原创 nordic sdk 例程 examples\ble_peripheral\ble_app_hids_keyboard 代码详解
nordic sdk 蓝牙键盘例程 examples\ble_peripheral\ble_app_hids_keyboard 代码详解
2025-03-13 16:01:09
685
原创 nordic sdk 例程 examples\ble_peripheral\ble_app_ancs_c 工程代码详解
nordic sdk 例程 examples\ble_peripheral\ble_app_ancs_c 工程代码详解
2025-03-13 15:47:55
278
STM32F1芯片热风控制系统
2025-07-07
nrf52832超声波清洗机工程代码
2025-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅