- 博客(345)
- 收藏
- 关注
原创 弱上拉、强上拉、弱下拉、强下拉电阻?
上拉/下拉电阻的作用是将引脚电平稳定在高/低状态类型阻值范围驱动能力功耗典型应用场景弱上拉通常10kΩ~100kΩ弱(μA级拉电流)低低功耗场景、引脚默认高电平(如按键输入)强上拉通常1kΩ~4.7kΩ强(mA级拉电流)较高需要驱动小负载、强抗干扰的高电平输出弱下拉通常10kΩ~100kΩ弱(μA级灌电流)低引脚默认低电平、低功耗检测强下拉通常1kΩ~4.7kΩ强(mA级灌电流)较高需要强拉低电平、抗干扰的低电平输入。
2025-12-24 15:20:21
427
原创 高电平弱驱动、低电平强驱动是什么?
拉电流和灌电流是描述单片机GPIO引脚驱动能力的两个核心指标,本质是电流的流向不同,直接决定了引脚能驱动多大的外部负载。关键结论:灌电流驱动能力 > 拉电流驱动能力,因此实际开发中优先用灌电流驱动大负载(如LED、蜂鸣器)。已知:VCC=3.3VV_{CC}=3.3VVCC=3.3V,LED压降VF=2VV_{F}=2VVF=2V,引脚低电平VOL=0.2VV_{OL}=0.2VVOL=0.2V,目标电流I=5mAI=5mAI=5mA求:限流电阻RRRR=VCC−VF−VOLI=3.3−2−0.2
2025-12-24 14:53:47
581
原创 代码如何在单片机中运行?
fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;编写C代码预处理:展开头文件/宏编译:C→汇编→机器指令(.o)链接:合并.o+分配地址(.elf)格式转换:生成.hex/.bin烧录到STM32 Flash芯片复位:内核加载栈顶+复位向量启动文件:初始化内存/时钟内核执行main函数(取指→译码→执行)内核通过总线操作外设寄存器。
2025-12-24 11:32:24
784
原创 单片机的总线和时钟系统是什么?
在单片机 / MCU 中,内核(Core) 是整个芯片的运算和控制核心,相当于嵌入式系统的 “大脑”,所有指令执行、数据处理、外设调度都由内核主导。以你关注的 STM32 系列为例,其内核基于 ARM Cortex-M 架构(如 STM32F1 用 Cortex-M3,STM32F4 用 Cortex-M4),下面从内核的核心功能、架构特点、与外设的交互逻辑三方面详细说明:内核的核心功能。
2025-12-24 11:27:46
630
原创 单片机的寄存器是什么?
寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是有限存储容量的高速存储部件,它们可用来暂存指令、数据和位址。通用寄存器:用于存储数据和中间计算结果,例如x86架构中的AX、BX等。地址寄存器:用于存储内存地址,以便访问内存中的数据。程序计数器:用于存储下一条将要执行的指令地址。状态寄存器:用于存储CPU当前的状态和条件码。
2025-12-24 10:33:22
144
原创 (十九)FreeRTOS之内存池
核心本质:内存池是“预分配、定大小、整取整放”的内存管理方式,解决动态堆分配的效率、碎片、确定性问题;使用关键:根据实际数据大小设定块大小,创建时检查返回值,释放时确保归池正确;深度突破:理解“空闲链表”的操作逻辑(分配取表头、释放挂表头),能通过监控空闲块数排查内存问题。如果想进一步,我可以帮你梳理FreeRTOS内存池源码的阅读路线(从初始化到分配/释放的核心函数),或者针对“内存池+消息队列”的组合使用(嵌入式常用架构)给出示例,需要吗?
2025-12-23 18:13:38
537
原创 使用 Git LFS 管理大文件
核心问题是文件大小超过GitHub 100MB限制,需用Git LFS管理大文件。解决步骤:安装Git LFS → 追踪大文件 → 提交.gitattributes → 重新添加并推送文件。注意Git LFS的存储空间限制,或考虑使用云存储托管大文件。
2025-12-22 17:10:23
369
原创 Nor Flash与Flash?
概念层级:Flash 是闪存统称,包含 Nor Flash 和 NAND Flash 两大分支,你 ESP32-S3 用的 16MB SPI Nor Flash 是 Nor 分支的主流类型;核心差异:Nor Flash 小容量、随机读取快、支持 XIP,适配嵌入式设备;NAND Flash 大容量、顺序读写快,适配消费级存储;ESP32-S3 选型逻辑:SPI Nor Flash 接口简单、支持 XIP、容量匹配,是物联网小设备的最优解,无需用复杂的 NAND Flash。
2025-12-22 15:19:22
642
原创 (十四)Qt数据库
Qt SQL 模块提供关于数据库编程的支持,它支持多种常见的数据库,如 MySQL、Oracle、MS SQL Server、SQLite、Access 等。Qt SQL 模块包含一系列的类,可以实现数据库的连接、SQL语句运行、数据获取、数据显示与编辑等操作功能。本章介绍 Qt SQL 模块中一些主要类的使用方法,并以 SQLite 数据库为例介绍数据库的数据查询、显示、编辑修改等常见编程功能的实现。要在 Qt 项目中进行数据库编程,就需要使用 Qt SQL 模块。
2025-12-16 13:55:37
278
原创 (十三)Qt多线程
这种情况我们一般是创建一个单独的线程来执行这个比较耗时的操作。比如我们使用摄像头拍照保存照片。恩,很多朋友问,这个不算耗时吧。对的在电脑上使用 Qt 拍照,处理起来非常快。根本也不需要开启一个线程来做这种事。但是我们是否考虑在嵌入式的 CPU 上做这种事情呢?嵌入式的 CPU 大多数都没有电脑里的 CPU 主频(几 GHz)那么高,处理速度也不快。此时我们就需要考虑开多一个线程来拍照了。拍完照再与主线程(主线程即程序原来的线程)处理好照片的数据,就完成了一个多线程的应用程序了。
2025-12-16 13:55:13
871
原创 (十二)Qt绘图与图表
绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关于绘图与图表详解最好是看 Qt 官方的帮助文档。
2025-12-16 13:54:58
837
原创 (十一)Qt文件系统操作和和文件读写
文件读写是很多应用程序具有的功能,有些软件就是围绕着某一种格式文件的处理而开发的。Qt 提供了很多类,能进行文件系统操作和文件读写,例如获取文件信息、复制或重命名文件、读写文本文件和二进制文件、读写 XML 文件和 JSON 文件。熟悉这些文件操作和文件读写相关类的用法后,就可以根据某种文件的格式编写相应的文件读写程序,也可以自己设计特定格式的文件。Qt 中进行文件读写的基本的类是 QFile,在前面的一些示例中,我们就使用了 QFile 来读取文本文件的内容。
2025-12-16 13:54:36
522
原创 git 问题,远程仓库的 `main` 分支有你本地仓库没有的更新
这个错误的核心原因是main(比如其他人推送了代码,或你在另一台设备提交过),Git 拒绝直接推送避免覆盖远程内容。
2025-12-10 13:56:02
950
原创 (二十七)Linux的M.2 硬盘驱动
M.2 接口是一种物理接口标准,它可以支持多种不同的通信协议,包括 PCIe(Peripheral Component Interconnect Express)、SATA(Serial Advanced Technology Attachment)、USB(Universal Serial Bus)等。因此,M.2 接口的速度和性能取决于所使用的通信协议和硬件实现。M.2 接口可以支持 PCIe 3.0,这是一种高速的数据传输协议,通常用于连接图形卡、固态硬盘(SSD)以及其他需要高带宽的设备。
2025-12-03 10:03:55
643
原创 (七)yocto之Poky 参考发行版
Poky 作为 Yocto 项目的参考发行版,其核心价值在于为用户提供一个可靠的基础环境,用于学习和构建嵌入式 Linux 系统示例。Poky 的开发历程与特性紧密相关,它在 Yocto 项目中既是重要的工具,又是探索嵌入式系统开发的理想起点。要理解 Poky 的作用,首先需要明确“发行版”(distribution)的概念。发行版可以定义为“将软件、功能或内容打包为一个独立实体,即可用于分发的集合”。简而言之,发行版是一个经过预配置的软件集合,用户可以直接使用,无须从零开始配置和安装各个组。
2025-11-25 18:29:09
46
原创 (六)yocto之BitBake工具
BitBake 作为一个通用的任务执行引擎,广泛应用于嵌入式 Linux 系统的开发中。其模块化设计不仅支持任务调度、数据管理和资源获取,还为复杂构建流程提供了高效的支持。为了满足不同的开发需求,用户可以通过多种方法获取 BitBake 工具。根据使用场景和需求的不同,主要有以下四种获取方法。使用 Git 克隆 BitBake 源代码库是获取 BitBake 的推荐方式。这种方式能够便捷地获取最新的错误修复,同时访问稳定分支和开发中的主分支。
2025-11-25 18:28:52
119
原创 (五)yocto之元数据层(layer)
层进一步提供了模块化管理元数据的机制。通过层,可以将元数据按照硬件支持、功能模块或系统配置等进行分类和隔离,使构建系统更具灵活性和可扩展性。层的引入不仅提升了元数据的可维护性,还为复杂项目中的协作与复用提供了有力支持。
2025-11-25 18:28:36
163
原创 (三)yocto之BitBake元数据语法
构建系统的元数据与其他类型的语言不同,变量没有固定类型。BitBake 构建引擎在解析变量时,将所有赋值内容视为字符串,并以键值对(Key-Value Pair)的形式存储在 BitBake内部数据字典(BitBake datastore)中。变量名作为键(Key)唯一地标识变量,变量内容作为值(Value)与键关联。这种机制不仅便于快速查找变量,还支持通过操作符灵活定义、追加、前置和移除变量值。变量的命名规则在构建系统中,变量名(也称为键,Key)通常由大写字母和下画线“_”组成,并以大写字母开头。
2025-11-25 18:27:54
27
原创 (二)yocto之BitBake元数据架构
元数据(Metadata)是“描述数据的数据”,用于定义数据的内容和属性,其词源“meta-”来自希腊语,意为“超越”。在计算机领域中,元数据被广泛用于优化数据管理和自动化流程,具有结构化和抽象化的特性。
2025-11-25 18:27:35
255
原创 (一)Yocto之BitBake入门学习
yocto工程的主要组成部分是bitbake工具与元数据。bitbake是一个通用任务执行引擎,元数据文件主要分为conf、bbclass、bb文件。bitbake与元数据的关系类似于gcc与c代码。一门新的语言的学习往往从编写 hello world 开始,BitBake也是如此。本教程介绍了如何创建一个yocto项目以及BitBake构建该项目所需的适用元数据文件。以下从一个新用户的角度来使用bitbake工具构建 hello world 程序。bitbake英文直译为烘培;
2025-11-25 18:27:15
50
原创 安卓app与Onenet的mqtt通信
AndroidManifest.xml导入mqtt库MainActivity.javaMyMQTTClient.javaactivity_main.xml
2025-11-25 18:25:56
39
原创 安卓APP与Onenet的http通信
响应: {“code”:10411,“data”:null,“msg”:“属性设置失败:设备响应超时”,“request_id”:“dba83919206642a8bc7058597e38d369”},这个需要发布响应。导入okhttp3库。
2025-11-25 18:24:51
39
原创 安卓常错问题
所有字段(identifier、name、value)都用dataObj.has(“key”)判断是否存在,避免 JSON 中缺失字段时抛出JSONException。优势:先写常量字符串,避免identifier为null时抛出空指针异常(null.equals(xxx)会崩溃,xxx.equals(null)返回false)。需在onCreate中通过findViewById初始化TextView,且必须在setContentView之后(否则找不到控件,返回null);5. 控件初始化(必须)
2025-11-20 16:22:52
279
原创 C语言之stat、fstat、lstat、fstatat函数
函数核心场景符号链接处理stat路径获取目标文件信息跟随fstat已打开文件的元数据(高效、线程安全)跟随lstat路径获取符号链接本身信息不跟随fstatat相对路径(基于目录 fd)、灵活控制链接可控制(默认跟随)若文件已打开:优先用fstat(避免路径解析开销)。若需获取符号链接信息:用lstat或。若需限制目录访问(如沙箱):用fstatat+ 目录 fd。普通路径获取目标文件信息:用stat。
2025-11-14 16:20:35
1068
原创 没使用git lfs install,直接git clone 会怎么样?
操作仓库含 LFS 追踪文件仓库不含 LFS 追踪文件未直接clone仅下载占位符,真实大文件缺失正常下载所有文件先再clone自动下载真实大文件(LFS 自动工作)正常下载所有文件。
2025-11-13 17:43:23
374
原创 RreeRTOS任务堆栈空间选择,应对栈空间溢出?
让我检查一下 wifi_ui.c 文件中创建任务时的栈大小设置: components\demos\WIFI_DEMO\wifi_ui.c 我找到了问题!在 wifi_ui.c 文件中,创建天气任务时栈大小设置得太小: c Apply xTaskCreatePinnedToCore(weather_init, “get_weather_task”, 2 * 1024, NULL, 3, NULL, 1);解决方案: 需要增加天气任务的栈大小。
2025-11-03 09:13:07
297
原创 如何在ESP32-S3项目中使用FreeRTOS?
任务管理 (Task Management)任务并行化: 多个功能模块独立运行事件驱动: 通过事件组实现任务同步数据安全: 使用队列和互斥锁保护共享资源实时响应: 合理的优先级分配确保关键任务及时执行资源管理: 任务删除机制避免资源浪费这种设计使得手持设备能够同时处理用户界面、传感器数据、网络连接等多个功能,提供流畅的用户体验。
2025-10-27 19:34:01
319
原创 为什么用事件组而不用全局变量
1. 原子性保证事件位的设置、测试、清除操作是原子的消除了竞争条件和数据不一致问题2. 高效的阻塞等待任务可以在阻塞状态下等待事件发生不浪费CPU资源,响应及时3. 灵活的事件组合支持等待单个事件或多个事件的组合支持"与"和"或"逻辑4. 多任务同步一个事件可以唤醒多个等待的任务实现复杂的多任务协调逻辑5. 中断安全可以在中断服务程序中设置事件位提供中断与任务间的高效通信6. 资源轻量事件组本质上是32位整数,内存占用极小操作开销低,适合高频事件处理。
2025-10-27 19:17:01
873
原创 RTOS的队列一般什么时候使用,列出常用场景
我来为您详细介绍RTOS中队列的使用时机和常用场景。让我先搜索一些最新的RTOS队列相关信息。搜索结果很好,涵盖了RTOS队列的使用场景。让我再搜索一些更具体的应用场景信息。基于搜索到的信息,我来为您详细介绍RTOS中队列的使用时机和常用场景。
2025-10-27 16:12:13
904
原创 RTOS的互斥锁一般什么时候使用,列出常用场景
我来为您详细介绍RTOS中互斥锁的使用时机和常用场景。让我先搜索一些最新的RTOS互斥锁相关信息。搜索结果提供了很多关于RTOS互斥锁的信息。让我再搜索一些更具体的互斥锁使用场景和应用案例。基于搜索到的信息,我来为您详细介绍RTOS中互斥锁的使用时机和常用场景。
2025-10-27 16:07:20
254
原创 如何在vs2019中使用LVGL模拟器新建文件并运行
1.为了能够让项目编译c代码,在项目中设置编译为C代码。添加ui筛选项,并导入test.c和test.h。或者保持默认,后续在.h文件中,要改为。.要不编译器会按照C++来编译,所以会提示无法解析的外部命令。2.右键lvgl添加新建筛选项。C++和C编译器是不一样的,
2025-10-16 11:00:09
158
原创 (二十一)ESP32-S3之加载SD卡的PNG图片
我们常用的图片格式有很多,一般最常用的有三种:JPEG(或JPG)、BMP、PNG和GIF。其中 JPEG(或 JPG)、PNG 和 BMP 是静态图片,而 GIF 则是可以实现动态图片。下面,我们简单介绍一下这三种图片格式。BMP 编码简介首先,我们来看看 BMP 图片格式。BMP(全称 Bitmap)是 Window操作系统中的标准图像文件格式,文件后缀名为“.bmp”,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP 文件所占用的空间很大,但是没有失真。
2025-10-15 10:25:36
1084
原创 LVGL颜色失真问题
(常见于某些显示屏),而默认情况下小端系统会先发送低位字节,导致颜色错乱。某些硬件允许通过 SPI 寄存器配置字节序(如 STM32 的。面向字节的接口会按内存顺序发送数据。方式存储:低位字节在前,高位字节在后。按小端顺序发送字节(低位字节先发送),适用于。在 LVGL(LittlevGL)图形库中,,可解决因字节序不匹配导致的颜色失真问题。LVGL 会在发送 16 位颜色时。每个像素用 16 位表示,结构为。在内存中,16 位值以。(5+6+5 位)。
2025-10-15 09:59:58
435
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅