- 博客(24)
- 收藏
- 关注
原创 低功耗蓝牙BLE专业术语
本文详细介绍了蓝牙低功耗(BLE)技术的核心细节,涵盖物理层、链路层、协议规范及安全特性。物理层部分包括信道频率、调制参数、发射功率和接收灵敏度等技术指标;链路层解析了状态机转换、数据帧结构和跳频算法;协议部分详细说明了ATT/GATT操作码、服务类型和属性权限;安全管理章节阐述了配对流程与密钥体系;BLE 5.x新特性部分介绍了2M PHY、扩展广播等增强功能;最后提供了调试相关的性能参数。全文通过表格和公式呈现关键技术要点,为BLE开发提供实用参考。
2025-11-04 19:43:04
949
原创 M0内核写BootLoader时,A区注意事项
本文介绍了STM32F030芯片中实现BootLoader与应用程序共存的方法。由于M0内核不支持向量表重定位,需将应用程序向量表从Flash(0x08003000)复制到SRAM起始地址(0x20000000),并通过SYSCFG_MemoryRemapConfig()设置为SRAM启动。具体实现包括:1)计算向量表大小(46个中断×4字节);2)在应用程序初始化时完成向量表复制和重映射;3)在Keil中正确配置Target选项,为SRAM预留向量表空间(0xC0字节)。文中给出了完整代码示例和配置截图,
2025-10-28 16:44:02
289
原创 蓝牙BLE开发学习笔记(基于ESP-IDF)
摘要: 本文系统介绍了蓝牙BLE的基础架构与核心概念,重点剖析了GATT层级结构(配置文件→服务→特征→属性)和UUID识别机制。详细阐述了BLE信道的分布与功能(3个广播信道+37个数据信道),以及广播类型、参数配置和数据结构(AD格式)。特别针对ESP32开发,提供了广播控制API示例和自定义数据构造方法,涵盖中心设备/外设角色、GAP/GATT协议层、信道跳频等关键技术点,为BLE物联网应用开发提供了完整技术参考。
2025-09-08 11:32:28
1081
原创 MQTT协议详解
MQTT协议是一种轻量级的发布/订阅消息传输协议,专为物联网和低带宽场景设计。其核心组件包括客户端和服务器(Broker),通过主题(Topic)机制实现消息路由。协议支持三种QoS级别(0-2),提供不同的可靠性保证。MQTT报文由固定报头、可变报头和有效载荷三部分组成,包含14种报文类型,如CONNECT、PUBLISH等。关键特性包括保留消息、遗嘱消息和心跳机制,确保通信可靠性。默认使用1883端口,支持TLS加密。该协议因其低功耗、低带宽占用和异步通信特性,广泛应用于物联网、智能家居等领域。
2025-09-05 15:41:07
1331
原创 ICM42670-P使用笔记
摘要:ICM-42670-P是一款集成三轴加速度计和陀螺仪的传感器,支持低噪声/低功耗模式。其特点包括:1)2.25KB可配置FIFO(与APEX功能共享存储);2)可编程中断系统,支持多种触发条件;3)APEX运动功能(计步、倾斜检测等);4)通过间接方式访问MREG1-3寄存器,需遵循特定时序要求;5)模式切换时需注意电源管理时序(如陀螺仪重启需20ms延时)。该芯片提供灵活的配置选项,适用于各类运动传感应用场景。(150字)
2025-07-29 14:45:03
1720
转载 C语言volatile关键字的作用
C语言中volatile关键字用于指示变量可能被意外修改,防止编译器优化。它强制每次访问都从内存读取,确保变量可见性,适用于多线程、硬件寄存器访问等场景。但需注意:不能保证原子性,不应滥用,且不同编译器实现可能不同。主要用于硬件编程、中断处理等需要严格内存访问顺序的场合。
2025-07-24 14:49:03
46
原创 C++程序的内存模型
代码区:有操作系统进行管理的,存放函数体的二进制代码全局区:存放全局变量、静态变量、常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存分区的意义:不同区域的存放的数据,具有不同的生命周期,便于灵活编程。
2025-07-17 22:22:20
271
原创 TCP&UDP特点和区别
发短信,单方面传输数据即可,发送方和接收方都不用管对方的状态。基于二进制的数据格式,传输时以一Byte一Byte传输。打电话,传输数据需要在双方都接通且没有挂断的情况。对数据的整体打包,例如短信整体,传输时打包传输。可以同时接收和发送数据,含有接收和发送缓冲区。双方需要确定,比如打电话,对讲机等。比如评论的时候有字数限制。
2023-04-15 22:36:07
151
原创 IO图解及Java中InputStream,OutputStream,FileReader,FileWriter用法
输入还是输出是相对内存(缓冲区)而言的,而InputStream和OutputStream读取的是二进制文件。
2023-04-03 19:17:41
895
原创 Java中File 类的基本用法
注意:创建文件对象不写入任何内容,关闭了文件对象就没了(没有在磁盘上创建文件),但是如果创建的文件对象后写入数据,则会在磁盘上创建文件并保存下来。
2023-04-02 18:24:44
392
原创 IO、存储、硬盘、文件系统基础知识
IO 就是指“输入和输出”(input和output),由于程序和运行时数据是在中驻留,由CPU执行,涉及到数据交换的地方,通常是磁盘、网络等就需要IO接口。根据对象不同,IO模式可以分为磁盘IO模型和网络IO模型,IO操作会涉及到用户空间和内核空间的转换。
2023-03-31 21:57:43
472
原创 (笔记)Java多线程环境下的HashTable, HashMap, Concurrent HashMap 之间的区别
ConcurrentHashMap是先创建一个2倍于原始的大小的内存空间,每次调用ConcurrentHashMap的时候都会搬运一部分原始数据到新的内存空间,直到全部搬运完删除原始空间。ConcurrentHashMap,在加锁上面力度较小不是对整个Hash表加锁,仅仅对数据下标加锁,对于读操作不加锁,写操作加锁,同时使用了大量volatile关键字修饰共享变量。HashMap和HashTable是创建一个2倍于原始的大小的内存空间,一次性把原始数据搬到新的内存空间中,效率不是很高。
2023-03-26 21:42:09
123
原创 Synchronized特性、使用、机制,与ReentrantLock区别
所有的锁释放之后,锁对象不再支持偏向锁,因为之前程序执行到此处产生过激烈的锁竞争,那么以后程序再次执行到这里依旧会产生激烈的锁竞争,会直接升级成轻量级锁或者重量级锁。
2023-03-25 10:10:28
325
原创 (笔记)java锁策略,synchronized对比,CAS策略
CAS(Compare and Swap比较并交换)即:用一个预期值与内存中的值相比较,若相等则交换否则不操作。
2023-03-22 15:36:17
392
原创 初入java线程池
ThreadPoolExecutor(int corePoolSize,//核心线程数int maximumPoolSize, //最大线程数long keepAliveTime, //临时线程存活时间TimeUnit unit, //临时线程存活时间单位BlockingQueue workQueue, //组织保存任务的阻塞队列ThreadFactory threadFactory, //线程工厂。
2023-02-28 13:54:11
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2