- 博客(41)
- 收藏
- 关注
原创 xPSR
在 ARM Cortex-M3 中, 是核心的状态控制寄存器,由三个子状态寄存器合并而成,用于记录处理器的运算状态、中断状态和执行环境。
2025-06-01 23:23:05
1028
原创 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
原创 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
原创 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 内存
根据STM32的存储器映射机制,其32位地址总线可访问4GB逻辑地址空间(0x00000000-0xFFFFFFFF),但实际物理地址分配由芯片厂商定义。
2025-05-13 12:27:37
1093
原创 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 开发中用于创建 GATT 服务(Generic Attribute Profile Service)的核心函数。通过合理设计服务结构和句柄分配,可高效实现 ESP32 的 BLE 功能,满足从简单数据传输到复杂多服务交互的需求。表示成功,其他错误码需根据具体场景排查。若需创建多个服务,可在。
2025-04-24 23:04:22
288
原创 STM32F103C8T6 引脚参考
2025-04-24 15:58:32
274
原创 ESP32蓝牙开发笔记(七)
1.当从设备通过广播向外发送自身的存在,主设备发现后,通过用户主动发起连接,就会向外发送一个连接请求,从设备进行处理连接请求。2.如果两个设备已经完成配对:有些从设备开机后会向外发送定向连接,主设备发现后,主动向从设备发起连接请求3.双方通过CONNECT_REQ里面的新的AccessAddr进行通讯打印主设备的地址。
2025-04-24 14:19:38
215
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人