- 博客(300)
- 收藏
- 关注

原创 【嵌入式学习收徒,高薪offer等你来!!!】
团队指导老师毕业于南京航空航天大学、萨塞克斯大学、山东大学、华东理工等知名大学的本科/硕士。目前从事芯片、智能家居、音视频、图像识别、无人机等行业工作多年的学长学姐,他们在各自行业都是发展很不错的佼佼者。我们的指导采用完整的教学和辅助体系,**指导内容能够结合工作实际。不脱离实际工作岗位,**拒绝假大空于噱头,希望能够真正地帮助到学弟学妹们。
2024-03-18 19:55:51
883
转载 一篇文章教会你DS18B20温度传感器读取温度,附STM32代码示例
*报警搜索命令:**主机(总线控制器)可以通过发送报警搜索命令(0xEC)来检测总线上所有DS18B20的报警标识。**温度报警阈值:**用户可以将上报警阈值(TH)和下报警阈值(TL)存储在DS18B20的非易失性EEPROM中的特定寄存器。在DS18B20温度传感器中,每个设备都内建了一个64位的激光光刻只读存储器(ROM),这个ROM存储了设备的唯一标识信息。**从暂存器到EEPROM的拷贝:**总线控制器必须发出拷贝暂存器指令(0x48)将TH、TL和配置寄存器的数据从暂存器拷贝到EEPROM。
2025-04-16 23:50:50
转载 基于 Ubuntu22.04 安装 SSH 服务
本文详细介绍了如何在Ubuntu22.04上安装和配置SSH服务,包括修改默认端口、限制登录尝试、禁止root登录,以及使用UFW防火墙保护。此外,还提供了通过MobaXterm、CMD和VSCode远程连接的方法,并给出了SSH故障排查的步骤。
2025-04-16 15:49:55
3
转载 【Linux】线程同步与互斥 (生产者消费者模型)
*⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取,阻塞队列就相当于⼀个缓冲区,平衡了⽣产者和消费者的处理能⼒。指令, 该指令的作⽤是把寄存器和内存单元的数据相交换, 由于只有⼀条指令, 保证了原⼦性, 即使是多处理器平台, 访问内存的总线周期也有先后, ⼀个处理器上的交换指令执⾏时另⼀个处理器的交换指令只能等待总线周期。信号量作⽤相同,都是⽤于同步操作,达到⽆冲突的访问共享资源⽬的。
2025-04-10 22:24:42
38
转载 【MySQL】内置函数+复合查询+内外连接
多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。📚 **案例:**显示雇员名、雇员工资以及所在部门的名字因为上面的数据来自 EMP 和 DEPT 表,因此要联合查询;📚 **案例:**对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要显示出来。返回一行记录的子查询;
2025-04-08 23:44:46
22
转载 在Mac上一键安装Mysql(解决所有安装问题)
一文教你如何在Mac上一键安装Mysql (解决所有安装问题)重点强调安装mysql成功的关键在于安装的版本不能是最新!!
2025-04-03 23:04:10
164
转载 一篇文章教会你红外接收模块接收红外遥控信号,附STM32代码示例
NEC协议是红外通信中非常流行的一种协议,广泛应用于各种消费电子产品,如电视、投影仪和许多迷你遥控器。虽然像格力和美的这样的空调制造商可能使用不同的红外协议,但红外通信的基本原理是相同的。一旦你理解了红外光的传输方式和如何解析NEC协议的数据包,你就可以将这些知识应用到其他协议上,通过观察和分析它们的信号特征,来逆向工程和解码它们。简而言之,掌握一种协议的解析方法,就好比掌握了打开所有红外通信理解之门的钥匙。
2025-04-02 23:24:37
36
原创 OpenWrt开发第6篇:怎么添加OpenWrt的Package-基于Raspberry Pi 4B开发板
如图1所示,首先创建软件包所在的目录,在openwrt根目录中执行mkdir -p package/mypackages/helloworld命令;
2025-03-20 18:30:18
95
原创 OpenWrt开发第5篇:Openwrt的目录结构分析-基于Raspberry Pi 4B开发板
OpenWrt系统不是从0开发的,它是基于BuildRoot开发的。一般固件是由kernel和rootfs构成的。OpenWrt代码是由脚本,文件(Makefile...)构成的,一般刚开始git的时候就是下载脚本和makefile这些,编译的时候才会去下载代码,就是make阶段。
2025-03-20 18:16:29
53
原创 OpenWrt开发第4篇:设置开发板的IP-基于Raspberry Pi 4B开发板
有时候开发过程中经常会使用其他路由器,很多时候固件烧上去之后板子IP基本都是192.168.1.1,这时就需要修改板子的IP,下面介绍一下板子修改IP的两种方法;
2025-03-20 15:08:24
231
转载 轻松美化双系统启动界面与同步时间设置(Windows + Ubuntu)
在这篇文章中,我将详细介绍如何美化双系统启动界面和同步双系统时间。写这篇文章的初衷,一方面是为了方便自己记录和总结这些步骤,避免每次安装或切换系统时重复操作;另一方面,也希望通过这篇文章帮助到其他需要自定义启动界面和解决双系统时间不同步问题的朋友们。双系统的启动界面通常比较单调,通过一些简单的设置,我们可以将 GRUB 启动界面美化得更具个性化,同时解决双系统间由于时间设置不同步的问题。
2025-03-19 22:43:52
72
原创 OpenWrt开发第3篇:烧写OpenWrt固件-基于Raspberry Pi 4B开发板
首先准备好以下几样设备:树莓派Raspberry Pi 4b开发板一块,树莓派4B的电源5V供电电源一个,SD卡一个,读卡器一个,一根网线,一块串口小板和三根串口线(RX,TX,GND);
2025-03-19 21:59:53
53
原创 OpenWrt开发第2篇:下载编译Openwrt-基于Raspberry Pi 4B开发板
OpenWrt 可以被描述为一个嵌入式的 Linux 发行版。(主流路由器固件有 dd-wrt,tomato,openwrt,padavan四类)对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
2025-03-19 21:33:03
314
原创 OpenWrt开发第1篇:搭建开发环境-基于Raspberry Pi 4B开发板
准备VM16+ubuntu20.04的开发环境安装包,首先详细讲解一下VM16+ubuntu20.04的安装过程
2025-03-19 20:46:32
334
转载 深度解析Linux 软件包管理器 yum(查看、安装、卸载软件的相关操作)
一文深度解析Linux 软件包管理器yum,包括查看、安装、卸载软件的相关操作。
2025-03-18 23:03:08
43
转载 手把手教你如何在Windows上安装Git并连接GitHub
Git 是目前最流行的版本控制工具,在 Windows 上安装 Git 可以通过 官方安装包 或 命令行工具 来完成。本教程将详细介绍如何在 Windows 上安装和配置 Git,并确保你可以顺利使用 Git 进行版本控制。
2025-03-13 23:48:05
122
转载 全网超详细手把手教你在 VS Code 中搭建 C/C++ 开发环境(MSYS2 编译器)
对于 C/C++ 开发,VS Code 通过插件的强大扩展能力,让开发、编译、运行、调试等功能更加便捷高效。本教程将以 Windows 11 系统为例,手把手教你在 VS Code 中搭建 C/C++ 开发环境。
2025-03-12 23:00:12
423
转载 FFmpeg 超级详细安装与配置教程(Windows 系统)
FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。
2025-03-12 15:39:19
577
转载 Python分享20个Excel自动化脚本
在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式。通过Python,我们可以实现对Excel文件的各种自动化操作,提高工作效率。本文将分享20个实用的Excel自动化脚本,以帮助新手小白更轻松地掌握这些技能。
2025-03-12 13:51:33
62
原创 FreeRTOS第19篇:FreeRTOS链表实现细节06_手写简化版FreeRTOS列表(实战篇)
/ 列表项定义(简化版)// 排序值(模拟任务优先级)// 后继指针// 前驱指针// 指向宿主对象(如任务)核心功能完整:支持双向环形链表、原子计数器和遍历指针优化。代码简洁性:省略了FreeRTOS的配置宏和平台相关代码,便于理解。
2025-03-07 18:57:57
199
1
原创 FreeRTOS第18篇:FreeRTOS链表实现细节06_遍历指针(pxIndex)与调度器的高效协同
/ 创建3个同优先级任务i<3;i++) {// 初始化就绪列表pxIndex通过维护动态遍历状态,将任务调度的时间复杂度从O(n)优化至O(1),是FreeRTOS实时性的核心保障之一。效率优先:通过简单指针移动替代全链表遍历。资源节约:以极小的内存代价换取性能大幅提升。思考题若任务优先级动态变化,pxIndex是否需要重新初始化?在多核系统中,pxIndex的设计会面临哪些挑战?
2025-03-07 18:36:35
150
原创 FreeRTOS第17篇:FreeRTOS链表实现细节05_MiniListItem_t:FreeRTOS内存优化
/ 标准列表项(ListItem_t)// 排序值(如任务优先级)// 后继指针// 前驱指针// 指向宿主对象(如TCB)// 指向所属列表// 迷你列表项(MiniListItem_t)// 排序值// 后继指针// 前驱指针// 排序值// 嵌入迷你列表项int taskId;} Task_t;通过字段裁剪和内存对齐优化,在特定场景下实现了内存占用与性能的平衡。按需定制:区分高频和低频操作场景,避免“一刀切”设计。内存优先:在功能满足的前提下,优先减少内存占用。
2025-03-07 18:29:37
304
原创 FreeRTOS第16篇:FreeRTOS链表实现细节04_为什么FreeRTOS选择“侵入式链表”
/ 宿主对象(模拟TCB)int id;// 嵌入的链表节点} Task_t;// 初始化任务并插入就绪列表内存效率:消除独立节点的冗余存储,尤其适用于资源受限的嵌入式系统。访问性能:直接通过节点访问宿主对象,减少指针跳转,提升实时性。系统稳定性:减少动态内存分配,降低内存碎片和泄漏风险。思考题如果多个链表需要嵌入到同一个宿主对象中(如任务同时存在于就绪列表和事件列表),应如何设计?侵入式链表是否适用于所有场景?举例说明其局限性。
2025-03-07 18:25:26
38
原创 FreeRTOS第15篇:FreeRTOS链表实现细节03_List_t与ListItem_t的奥秘
高效遍历pxIndex指针减少遍历次数,任务调度时间复杂度优化至O(1)。内存节省:侵入式设计省去独立节点内存,32位系统下每个列表项节省8字节。实时性保障:原子计数器和临界区保护确保操作安全。FreeRTOS的列表设计通过双向环形结构侵入式设计和原子操作,在有限的资源下实现了高效、安全的链表操作。这种设计哲学贯穿于整个FreeRTOS内核,是其成为嵌入式实时系统首选的关键原因。思考题如果多个任务同时操作同一个列表,FreeRTOS如何避免数据竞争?为什么xListEnd的xItemValue。
2025-03-07 18:21:14
278
原创 FreeRTOS第14篇:FreeRTOS链表实现细节02_双向链表与环形化:FreeRTOS列表的雏形
prev(指向前驱节点)和next(指向后继节点)。// 双向链表节点定义int data;// 初始化链表(创建头节点)// 初始时前驱和后继均指向自身// 在指定位置后插入节点// 新节点的前驱指向pos// 新节点的后继指向pos的后继// pos后继的前驱指向新节点// pos的后继指向新节点// 删除指定节点// 前驱节点的next绕过当前节点// 后继节点的prev绕过当前节点free(node);// 正向遍历链表。
2025-03-07 14:48:41
34
原创 FreeRTOS第13篇:FreeRTOS链表实现细节01_单链表的实现与局限性:为什么FreeRTOS需要更复杂的结构?
单链表的本质是通过指针将多个节点串联成链式结构。每个节点包含数据域和指向下一个节点的指针。// 单链表节点定义int data;// 数据域(示例中用int类型)// 指向下一个节点的指针// 插入节点到链表头部// 删除指定值的节点= NULL) {} else {return;// 遍历链表并打印所有节点值= NULL) {单链表虽然简单高效,但其局限性无法满足实时操作系统的核心需求。双向环形链表:支持双向遍历,消除头尾节点的特殊处理。侵入式设计。
2025-03-07 14:02:30
217
转载 VSCode下EIDE插件开发STM32
本STM32教程使用vscode的EIDE插件的开发环境,完全免费,有管理代码文件的界面,不需要其它IDE。
2025-03-04 13:52:13
165
2
原创 FreeRTOS第12篇:系统的“绿色通道”——中断管理与临界区
在FreeRTOS中,中断管理和临界区保护正是这样的“应急机制”。它们确保系统既能响应紧急事件,又能维护核心逻辑的完整性。本篇将深入源码,解析FreeRTOS如何优雅处理中断与临界区。
2025-02-17 23:45:11
82
原创 FreeRTOS第11篇:FreeRTOS——移植与裁剪
FreeRTOS的移植与裁剪正是这样的“量体裁衣”过程——通过适配不同硬件与精简功能,让系统在多样化的场景中游刃有余。本篇将深入源码,解析FreeRTOS如何“变形”以适配万千硬件。
2025-02-17 23:37:32
92
原创 FreeRTOS第10篇:系统的“体检医生”——调试与跟踪
在FreeRTOS中,调试与跟踪工具正是这样的“医疗设备”,它们帮助开发者透视系统内部状态,捕捉潜在风险。本篇将深入解析FreeRTOS的调试机制,为你的系统做一次全面“体检”。
2025-02-17 23:28:53
132
原创 FreeRTOS第9篇:任务的“快捷消息”——任务通知
FreeRTOS的任务通知(Task Notification)正是这样的“微信私聊”功能。它允许任务间直接发送轻量级消息,无需创建队列或信号量,实现高效同步与通信。本篇将深入源码,解析任务通知的设计与实战应用。
2025-02-17 23:20:23
40
原创 FreeRTOS第8篇:同步的“信号灯”——信号量与互斥锁
在FreeRTOS中,信号量(Semaphore)和互斥锁(Mutex)正是这样的“交通信号灯”,它们协调任务对共享资源的访问,确保系统高效且安全地运行。本篇将深入源码,解析信号量与互斥锁的设计与实现。
2025-02-17 23:06:44
53
原创 FreeRTOS第7篇:内存的“精打细算”——堆管理与内存分配
FreeRTOS提供了多种堆管理方案(heap_1到heap_5),每一种都针对不同场景优化。本篇将深入源码,解析FreeRTOS如何像“仓库管理员”一样,在资源受限的环境中实现高效内存管理。
2025-02-17 22:57:12
41
原创 FreeRTOS第6篇:系统的“闹钟”——软件定时器
在FreeRTOS中,软件定时器(Software Timer)正是这样的“厨房计时器”。它们由系统的“时间管家”(守护任务)统一管理,在后台默默计时,到期时触发回调函数。本篇将深入源码,解析软件定时器的设计与应用。
2025-02-16 21:03:36
80
原创 FreeRTOS第5篇:事件的“广播站”——事件组与事件标志
事件组是FreeRTOS中用于任务同步的高效机制,它允许任务等待多个事件,并在事件发生时被唤醒。本篇将深入源码,解析事件组的设计与实现。
2025-02-16 20:56:51
59
原创 FreeRTOS第4篇:数据的“高速公路”——队列与消息传递
在嵌入式系统中,任务间的协作同样需要精准的“沟通”——一个任务产生数据,另一个任务消费数据,中断服务需要通知任务处理事件。FreeRTOS的队列(Queue),正是这场“交响乐”中的指挥棒,它不仅传递数据,还协调任务的节奏,避免冲突与混乱。今天,我们将深入源码,揭开队列的设计奥秘。
2025-02-16 20:49:29
70
原创 FreeRTOS第3篇:链表的“精密齿轮”——列表与列表项
在FreeRTOS中,列表是任务调度的核心数据结构,它像“精密齿轮”一样,将任务组织成有序队列,确保调度器能够快速找到下一个执行的任务。本篇将深入源码,解析列表与列表项的设计与实现。
2025-02-16 20:40:36
162
电路设计、仿真与PCB设计-从模拟电路、数字电路、射频电路、控制电路到信号完整性分析 by 崔岩松
2024-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人