自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 xPSR

在 ARM Cortex-M3 中,​​ 是核心的状态控制寄存器,由三个子状态寄存器合并而成,用于记录处理器的运算状态、中断状态和执行环境。

2025-06-01 23:23:05 1028

原创 通过内核寄存器排除HardFault

【代码】通过内核寄存器排除HardFault。

2025-06-01 22:40:01 665

原创 CM3内核寄存器

【代码】CM3内核寄存器。

2025-06-01 22:29:48 992

原创 临界区保护

是用于的内联函数,常见于嵌入式系统(如STM32)的临界区保护。

2025-06-01 18:24:59 427

原创 __STDC_VERSION__

​在 C89/C90 或非标准编译器下,

2025-06-01 17:17:02 840

原创 ESP8266 AT指令回复状态

【代码】ESP8266 AT指令回复状态。

2025-06-01 00:35:35 365

原创 ESP8266常用指令

【代码】ESP8266常用指令。

2025-05-31 23:50:56 566

原创 USB MSC

主机(如电脑)识别USB MSC(Mass Storage Class)设备中的文件,本质上是通过实现的,涉及三个核心环节。

2025-05-30 19:58:49 727

原创 USB MSC SCCI

由于SCSI命令集包含数百条指令(涵盖SPC、SBC、MMC、SSC等子协议),上述表格仅列出核心命令。READ(10) 是 SCSI 协议中的标准读命令,用于请求存储设备(如 U 盘)返回指定扇区的数据。

2025-05-30 17:20:36 972

原创 FLASHDB API分析

是 FlashDB 中实现 ​高效二进制数据管理​ 的核心接口,其设计兼顾了嵌入式系统的资源限制与复杂数据需求。开发者需重点关注 ​缓冲区预分配​ 和 ​错误校验机制,结合迭代器与多线程锁构建鲁棒的存储方案。是 FlashDB 实现 ​高效二进制数据管理​ 的关键接口,其设计特点包括零拷贝优化、跨模式兼容和灵活的内存管理。开发者需重点关注缓冲区生命周期管理及对齐要求,结合和构建高可靠存储方案。典型应用场景包括固件升级(网页 7)、传感器数据持久化(网页 8)等嵌入式存储需求。

2025-05-19 18:00:38 1063

原创 FAL API分析

是 FAL 框架中实现 ​透明化 Flash 写入​ 的核心接口。开发者需重点关注 ​对齐要求​ 和 ​驱动适配,结合 Shell 命令(如fal probe和fal show)快速验证功能。通过灵活应用该函数,可构建高效可靠的嵌入式存储方案(如固件升级、日志记录等)。

2025-05-19 17:20:21 655

原创 USB学习笔记(一)

通过以上流程,可全面掌握USB枚举机制。建议结合网页9的设备描述符示例和网页4的抓包数据进行实践验证。

2025-05-19 00:29:59 888

原创 FAL结构体分析

以下是 ​FAL(Flash Abstraction Layer)​ 中关键结构体的详细分析,结合其设计原理与配置方法:FAL 通过以下结构体实现 Flash 设备管理和分区操作:作用:描述物理 Flash 设备的属性和操作接口。成员变量:示例​(STM32 片内 Flash 定义):2. ​(分区描述结构体)​作用:定义逻辑分区的属性。成员变量:示例​(分区表配置):二、结构体应用场景1. ​驱动层适配 ​片内 Flash:需手动实现 、、 函数,通过 关联到 例如:

2025-05-18 22:41:14 587

原创 STM32 OTA 中断向量表重定向

中断向量表重定向是OTA升级的核心机制,其本质是解决多份固件在独立Flash区域运行时中断处理的兼容性问题。通过VTOR寄存器或RAM重映射,开发者可确保BootLoader与APP的中断逻辑无缝切换,保障系统稳定运行。具体实现需结合芯片内核类型(是否支持VTOR)和Flash划分方案灵活选择。

2025-05-18 20:31:45 987

原创 Ubuntu 命令

【代码】Ubuntu 命令。

2025-05-17 23:29:36 413

原创 STM32 __main汇编分析

_main的汇编级调用在启动文件中表现为简单的地址跳转(LDRBX),但其内部逻辑由编译器自动生成,负责初始化C程序的运行时环境。通过调试器反汇编和内存观察,可间接验证其行为逻辑。

2025-05-13 16:37:24 1032

原创 STM32 __rt_entry

_rt_entry是STM32从硬件初始化过渡到用户程序的关键桥梁,其功能涵盖堆栈管理、C库初始化和退出处理。理解其机制有助于优化启动流程、调试内存问题及设计可靠的中断处理逻辑。对于需要深度定制启动流程的开发者,建议结合链接脚本(.ld)和启动文件(.s)进行底层调试。

2025-05-13 16:03:44 488

原创 STM32 __main

​__main函数​定位​:属于C/C++运行时库的初始化入口,由编译器自动生成,开发者不可见。​作用​:完成从加载域(Flash)到执行域(RAM)的代码和数据段拷贝、初始化ZI(零初始化)段、配置堆栈,并最终跳转至用户main()函数。​调用链​:启动文件(如)中的复位中断服务程序调用__main,再由__main触发__rt_entry进入用户main()。​用户main()函数​​定位​:开发者编写的程序入口,负责硬件初始化(如HAL库配置)和业务逻辑。​可见性。

2025-05-13 15:49:55 1007

原创 STM32 启动文件分析

​。

2025-05-13 15:48:18 870

原创 STM32 变量加载到flash的过程中

STM32通过链接脚本定义数据归属,由启动代码实现物理搬运,最终完成RAM数据加载。

2025-05-13 12:34:21 858

原创 STM32 内存

根据STM32的存储器映射机制,其32位地址总线可访问4GB逻辑地址空间(0x00000000-0xFFFFFFFF),但实际物理地址分配由芯片厂商定义。

2025-05-13 12:27:37 1093

原创 STM32实现循环队列

通常使用结构体封装队列的指针、长度及缓冲区。

2025-05-12 21:04:49 894

原创 STM32 变量存储

对实时性要求高的函数(如中断服务程序),可将其加载到RAM中运行以提升速度。通过操作选项字节(Option Bytes)设置读/写保护,增强安全性。此方法常用于读取存储在Flash末页的配置参数。将RAM中BSS段对应的区域全部初始化为0。根据链接脚本(.ld或.sct文件)定义的。完成上述初始化后,程序开始执行用户代码。将用户数据存储在Flash末页,通过。STM32上电后,启动文件(如。

2025-05-12 20:03:13 1193

原创 ESP32蓝牙开发笔记(十五)

在 ESP32 的 BLE 开发中,是用于向特征(Characteristic)中添加描述符(Descriptor)的核心函数。描述符用于提供特征的额外信息(如客户端特征配置、用户描述等)。

2025-05-07 23:21:53 732

原创 ESP32蓝牙开发笔记(十四)

在 ESP32 的 BLE 开发中,是用于向 GATT 服务中添加特征(Characteristic)的核心函数。

2025-05-07 23:18:40 1081

原创 ESP32蓝牙开发笔记(十三)

是BLE服务发现的核心机制,通过属性组类型快速定位服务端功能模块。开发者需结合GATT规范与ATT协议特性,合理设计服务发现流程,并处理MTU限制及安全策略,以实现高效稳定的蓝牙通信。是 BLE 服务发现的核心机制,通过属性组批量返回句柄范围与类型信息,支撑 GATT 服务架构的灵活扩展。开发者需关注 ​MTU 限制分次请求策略和 ​错误处理,以实现高效稳定的服务发现流程。实际应用中,结合 Wireshark 抓包工具可快速验证服务端响应逻辑。

2025-05-06 17:33:31 965

原创 ESP32蓝牙开发笔记(十二)

是BLE协议中实现功能协商的核心机制,其设计体现了蓝牙技术对兼容性和灵活性的平衡。开发者需结合具体硬件平台(如Nordic nRF52系列或TI CC26xx)的协议栈实现,合理配置功能掩码以优化性能与功耗。是 BLE 协议中功能协商的核心机制,其设计兼顾了协议演进与设备兼容性。开发者需结合具体硬件平台(如 Nordic 或 TI 芯片)的协议栈实现,合理配置功能掩码以优化性能与功耗。表明设备支持从 BLE 4.0 到 5.0+ 的多项功能,包括加密、数据长度扩展、高速率传输和长距离通信。

2025-05-06 16:38:23 767

原创 ESP32蓝牙开发笔记(十一)

作为BLE协议中的基础控制指令,在设备互操作性、协议升级和调试中具有重要作用。其设计体现了蓝牙协议栈的模块化特性,开发者需结合具体应用场景和硬件平台灵活运用。

2025-05-06 16:01:43 627

原创 ESP32蓝牙开发笔记(十)

在 ESP32 的 BLE(蓝牙低功耗)开发中,​gatts_if是 ​​(GATT Server Interface),用于。它的核心作用是。假设你的 ESP32 设备需要同时提供多个 BLE 服务(比如心率监测、电池电量、温度传感器),每个服务需要独立管理。gatts_if就像一个“身份证号”,告诉系统某个操作(比如读取数据)属于哪个服务,避免不同服务之间的数据混乱。​每个通过注册的 BLE 服务会分配一个唯一的gatts_if。​​。

2025-04-25 17:29:11 479

原创 ESP32蓝牙开发笔记(九)

在 ESP32 BLE 开发中,和。

2025-04-25 16:26:21 472

原创 ESP32蓝牙开发笔记(八)

是 ESP32 BLE 开发中用于创建 GATT 服务(Generic Attribute Profile Service)的核心函数。通过合理设计服务结构和句柄分配,可高效实现 ESP32 的 BLE 功能,满足从简单数据传输到复杂多服务交互的需求。表示成功,其他错误码需根据具体场景排查。若需创建多个服务,可在。

2025-04-24 23:04:22 288

原创 STM32F103C8T6 引脚参考

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

2025-04-24 15:58:32 274

原创 Git 命令总结

【代码】Git 命令总结。

2025-04-24 15:03:09 135

原创 ESP32蓝牙开发笔记(七)

1.当从设备通过广播向外发送自身的存在,主设备发现后,通过用户主动发起连接,就会向外发送一个连接请求,从设备进行处理连接请求。2.如果两个设备已经完成配对:有些从设备开机后会向外发送定向连接,主设备发现后,主动向从设备发起连接请求3.双方通过CONNECT_REQ里面的新的AccessAddr进行通讯打印主设备的地址。

2025-04-24 14:19:38 215

原创 ESP32蓝牙开发笔记(六)

应用场景 我的三模键盘 蓝牙一打开 电脑就快速和它连接了。必须指定目标设备的蓝牙地址。

2025-04-24 13:23:57 356

原创 ESP32蓝牙开发笔记(五)

【代码】ESP32蓝牙开发笔记(五)

2025-04-24 13:01:50 218

原创 ESP32蓝牙开发笔记(四)

蓝牙广播包由四部分组成:广播包通过PDU类型区分功能:广播数据由多个 ​AD Structure 组成,每个结构包含:常见AD Type定义:​数据长度限制​厂商自定义数据(0xFF)​​扩展广播(Bluetooth 5.0+)​广播数据超过31字节的方案​31+31字节扩展 通过将关键数据拆分到广播数据​(Advertising Data)和扫描响应数据​(Scan Response)中,总容量可扩展至62字节。广播数据用于主动发送设备基本信息(如MAC地址、基础服务UUID),扫描响应数据在设备被扫描

2025-04-22 22:44:52 1351

原创 ESP32蓝牙开发笔记(三)

是 GATT 服务端初始化的起点,开发者需在此事件中完成接口绑定、服务创建等关键操作,为后续数据交互奠定基础。,开发者可完善 GATT 服务的配置流程,为蓝牙数据传输提供灵活的控制接口。,开发者可构建完整的 GATT 服务结构,为蓝牙数据传输奠定基础。,开发者可以确保 GATT 服务的完整初始化流程,为后续的蓝牙数据传输奠定基础。存储到对应的 Profile 结构体中,以便后续事件分发和服务操作。若注册多个 Profile(如心率服务与设备信息服务),需在事件中通过。在全局事件处理函数中,需根据。

2025-04-22 16:33:09 1157

原创 ESP32蓝牙开发笔记(二)

【代码】ESP32蓝牙开发笔记(二)

2025-04-21 19:00:52 295

原创 ESP32蓝牙开发笔记(一)

【代码】ESP32蓝牙开发笔记。

2025-04-21 18:10:17 1047

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除