自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 苹果震动马达-MP3 单曲循环播放器

STM32F103C8T6 + MP3-TF-16P,固定重复播放一首歌。(最简版,无 ESP / OLED / 按键)。

2026-10-02 23:51:50 26

原创 TCP 并发服务器:连接分析、多线程与多进程

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据:2026-09-30 10:30 录音转写;第 299—325 页。本节边界:先用命令和 Wireshark 观察 TCP 连接,再分别用“每连接一个线程”和“每连接一个子进程”支持多个客户端。页码校正:用户输入的“299-3164页”与录音内容不符;录音在第 316 页后继续完整讲解多进程服务端,实际对应到第 325 页。

2026-10-02 22:15:48 121

原创 TCP 缓冲区:用户空间 stdio 与内核 Socket 缓冲

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据:2026-09-30 10:18 录音转写;第 290—296 页。本节边界:从缓冲区的作用讲到 C 标准 I/O 的三种缓冲模式、setvbuf()fflush()以及execve()实验;第 297 页开始的全缓冲独立实验未进入本次录音。页码说明:录音从第 290 页开始,实际继续讲到第 296 页,因此按 290—296 页整理。

2026-10-02 22:15:08 107

原创 TCP 套接字:API 流程、地址结构与网络字节序

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据:2026-09-29 21:22 录音转写;第 264—276 页。本节边界:从 Socket 的含义讲到常用 TCP API、IPv4 地址结构和字节序转换;第 277 页的测试程序尚未进入本次录音。页码校正:用户输入的“2744页”与教材总页数及录音内容不符,按录音实际对应范围整理为第 264—276 页。

2026-10-02 22:14:37 81

原创 TCP 协议:报文头、连接管理、可靠传输与窗口

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据:2026-09-29 20:51 录音转写;第 254—264 页。本节边界:讲 TCP 原理和窗口机制;第 264 页末尾开始出现 Socket 常用函数,具体 API 留到下一节。

2026-10-02 22:14:06 178 1

原创 Linux 网络编程基础:网络分类、分层模型与数据封装

课程:尚硅谷《嵌入式 Linux 应用层开发》第 6 章 Socket 编程依据:2026-09-29 20:21 录音转写;第 244—254 页。本节边界:这是 Socket 编程的理论入口,暂未讲socket()bind()listen()connect()等代码接口。

2026-10-02 22:13:29 198

原创 Hi3516CV610 20S V4 开发板启动与调试流程

本文记录 Hi3516CV610 20S V4 开发板从首次上电到应用开发环境可用的完整过程。下一阶段是编译和运行,开始研究 MPP 应用层流程。

2026-10-02 22:12:58 158

原创 Linux 线程同步:条件变量

课程:尚硅谷《嵌入式 Linux 应用层开发》第 4 章线程处理依据:2026-09-29 19:57 录音转写,整理到;第 164 页起。页码说明:第 164 页是自旋锁收尾和条件变量入口;接口及生产者消费者示例实际延续到第 165—168 页。录音 15:05 后的运行结果和后续改写不在本节范围内。

2026-10-02 16:06:24 219

原创 Linux 线程同步:读写锁

课程:尚硅谷《嵌入式 Linux 应用层开发》第 4 章线程处理依据:2026-09-29 19:30 录音转写,整理到;第 150—158 页。本节边界:讲清读写锁原理、基础 API、未加写锁的错误示例、加写锁后的修正,以及读写线程执行顺序实验的准备。第 158 页开始的“写饥饿”对应录音 17:56 以后,留到下一节。

2026-10-02 16:05:07 178

原创 Linux 线程同步:竞态条件与互斥锁

竞态条件(race condition)指两个或更多执行单元并发访问共享状态,最终结果取决于它们执行的精确先后顺序。至少两个线程并发执行;它们访问同一个共享对象;至少有一个线程执行写操作;访问之间没有正确的同步。number ++;预期是加两次,但实际可能只增加一次。互斥锁(mutex)用于建立互斥访问:任意时刻最多只有一个线程持有某一把锁。线程 B互斥锁线程 A线程 B互斥锁线程 Afill:#333;important;important;fill:none;

2026-10-02 16:04:27 213

原创 Linux 线程分离与主动取消:pthread_detach、pthread_cancel

因此录音中的异步取消代码只用于观察现象,普通业务代码应保持默认的延迟取消。线程以后重新启用取消并到达取消点时,仍可能被取消。,保证工作线程先结束”演示现象,但这只是时间上的猜测。打印计数每次停在不同位置,只能说明取消时机不可预测,不能说明异步取消适合实际使用。、默认延迟取消、异步取消和禁止取消,属于对第 128 页线程终止主题的实操补充。如果代码已经持有互斥锁,更常见的做法是注册取消清理函数,保证取消时解锁。也就是说,线程允许被取消,但通常只在到达取消点时真正响应。线程只在可控的取消点退出,便于安排清理。

2026-09-28 21:04:07 81

原创 Linux 线程终止:pthread_exit、join、detach 与 cancel

延迟取消模式下,目标线程通常到达取消点才处理待定请求。read;;;某些标准 I/O 操作。如果线程只进行纯计算、长时间不到取消点,取消请求可能迟迟不生效。可在循环合适位置加入。

2026-09-28 21:03:18 55

原创 Linux 线程创建:pthread_create 与基本回收

一个线程关闭共享的文件描述符后,其他线程也不能再使用该描述符。一个线程错误写坏堆内存,也可能让整个进程中的其他线程崩溃。“线程比进程轻量”是一般性描述,不代表所有任务都应该使用线程。下面创建两个工作线程,每个线程接收自己的参数并打印三次。进程是资源分配和程序运行的容器,线程是进程内部的执行单元。一个进程至少有一个线程,也可以同时运行多个线程。它能说明同一进程中有三条执行线:主线程、输入线程和输出线程。成功后,主线程和新线程都具备运行条件。两个线程可能都读到旧值,然后分别写回相同的新值,导致一次增加丢失。

2026-09-28 21:02:40 113

原创 Linux 信号:常用信号与安全处理

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章信号依据:2026-09-28 10:34“消息队列生产消费进程通信-信号”录音的 13:27—19:18;参考第 121—122 页。范围说明:PDF 第 121 页上半部分仍是消息队列结尾;第 121 页下半部分开始信号,第 122 页开始信号处理例程。录音讲完了例程,因此本文按录音补全流程,但不提前展开后续高级信号编程。

2026-09-28 17:16:15 158

原创 POSIX 消息队列:父子进程与生产者消费者

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章进程间通信依据:2026-09-28 10:11“消息队列父子进程通信”录音,以及 2026-09-28 10:34 录音的 00:06—13:26;参考第 110—121 页。范围说明:PDF 第 110 页上半部分是共享内存结尾;第 121 页上半部分完成消息队列通信方向讨论,下半部分已经进入信号,信号另见下一篇笔记。

2026-09-28 17:15:41 158

原创 Linux 共享内存通信:POSIX 共享内存与 mmap

mmap。

2026-09-28 17:15:07 136

原创 Linux 管道通信:匿名管道与 FIFO

结果:父进程等子进程,子进程等 EOF,形成互相等待。

2026-09-28 17:14:26 181

原创 Linux 进程通信介绍:内存隔离与 IPC 分类

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章进程间通信依据:2026-09-23 19:56 录音转写;的 PDF 第 85 页。本节边界:介绍进程通信的必要性、常见 IPC 类型、System V IPC 与 POSIX IPC,并通过和fork后全局变量实验做课前准备;具体管道编程留到下一节。

2026-09-28 17:13:46 229

原创 Linux 进程处理下:waitpid、进程树与孤儿进程

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章进程处理依据:2026-09-23 18:25 录音转写;的 PDF 第 74—85 页。本节边界:录音主体讲waitpid、进程树和孤儿进程;PDF 第 85 页开始进入进程间通信,本笔记只把它作为下一章预览。

2026-09-23 19:22:35 115

原创 Linux 进程处理中:execve 与 fork exec 模型

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章进程处理依据:2026-09-23 18:07 录音转写;的 PDF 第 70—74 页。本节边界:主体是execve单独使用以及组合;PDF 第 74 页末尾只引出waitpid和僵尸进程,完整回收方法留到下一节。

2026-09-23 19:21:59 139

原创 Linux 进程处理上:进程、system 与 fork

课程:尚硅谷《嵌入式 Linux 应用层开发》第 3 章进程处理依据:2026-09-23 17:05 录音转写;的 PDF 第 60—66 页。本节边界:从“什么是进程”讲到fork创建父子进程,并在第 66 页引出fork后文件描述符的继承。exec和完整的文件描述符案例将在后续页继续展开。

2026-09-23 19:21:20 130

原创 Linux 文件描述符

这张图从左向右读,不能把三个彩色方框理解成同一张表。

2026-09-23 13:29:16 185

原创 Linux 文件系统调用

课程:尚硅谷《嵌入式 Linux 应用层开发》文件 IO——系统调用依据:2026-09-23 12:33 录音转写;的 PDF 第 52—55 页。本节目标:理解系统调用与标准文件 IO 的关系,掌握openreadwriteclose,能正确处理返回值,并知道它们在普通文件、设备、管道和网络程序中的位置。

2026-09-23 13:24:45 303

原创 标准文件 IO

课程:尚硅谷《嵌入式 Linux 应用层开发》文件 IO 段落依据:2026-09-22 18:16 录音转写;的 PDF 第 42—52 页。范围:录音从fopenfclose讲到标准输入/输出/错误;PDF 第 42 页从fputs实例后半开始,第 52 页开始引出系统调用open。所以本笔记以FILE *为主,系统调用留待下一节。

2026-09-23 13:23:20 174

原创 Hi3516CV610 20S V4 开发板启动与调试流程

本文记录 Hi3516CV610 20S V4 开发板从首次上电到应用开发环境可用的完整过程。下一阶段是编译和运行,开始研究 MPP 应用层流程。

2026-09-21 22:38:45 203

原创 第一期:Makefile 与 Shell 脚本重复训练

makemake runmake clean本节采用“看懂一次、照写一次、填空一次、脱稿两次”的重复方式。

2026-09-20 15:47:15 225

原创 测试A学习顺序

现在可以把来源标清楚了。先说关键结论:你现有的“正点原子Linux第1~4期”和购买课程,基本能覆盖测试A的驱动部分;但两套目录里都没有系统讲解TCP Socket客户端/服务器。第二步需要额外看正点原子官方的“嵌入式Linux C应用编程”,它是独立课程,不属于传统第1~4期。也就是说,不是你没找到,而是课程体系本来就把“Linux应用编程”和“Linux驱动”分开了。正点原子官方资料也分别列出Linux C应用指南和Linux驱动指南。

2026-09-18 10:30:28 116

原创 ADC第一层:MQ-2模拟量采样与重复默写

ADC第一层就是让MQ-2模块的AO经过安全分压进入PA0,软件启动一次转换,等待EOC后读取DR,再观察0~4095原始值及PA0电压随环境变化的趋势。

2026-09-17 12:14:01 213

原创 SPI 第一层:STM32 与 ESP32 模拟 Flash 通信练习

STM32用CS划分事务,通过SPI发送命令、地址和数据;ESP32解析协议并保存数据,STM32再发送读请求和时钟取回同一地址的数据,比较后在OLED显示PASS或FAIL。

2026-09-16 01:01:56 164

原创 SPI 第一层:STM32 与 ESP32 模拟 Flash 通信练习

本实验通过STM32F103与ESP32模拟SPI Flash通信,实现指定地址写入与读取验证。STM32作为主机,使用自定义命令(写、读请求、读取)控制ESP32内部256字节内存。ESP32以模式0从机运行,接收指令并暂存数据,读操作分两步完成:先发送地址,再获取数据。通过OLED显示读写结果,判断是否成功。实验强调STM32端SPI代码默写,接线采用标准引脚,时钟频率281.25kHz,确保协议稳定。

2026-09-15 23:23:52 83

原创 SPI 第一层:OLED 提示的最小回环实验

SPI每产生一个时钟都会同时发送和接收一位;每字节等TXE后写DR、等RXNE后读DR,整个事务结束前再等BSY清零。

2026-09-15 22:54:59 113

原创 SPI第一层_背诵说明

SPI 主机通过写 DR 产生时钟并同时收发数据:每字节等 TXE、写 DR、等 RXNE、读 DR,整次事务结束时等 BSY 清零再释放 CS。# include "stm32f10x.h" // STM32F10x 标准外设库 # include "Delay.h" // 课程延时函数 /** ST7735S 与 STM32F103C8T6 的连接:* PA4 -> CS 软件片选,低电平选中屏幕* PA5 -> SCK SPI1 时钟* PA6 -> MISO/SDO 屏幕只写时可以不接。

2026-09-15 22:26:32 185

原创 29_硬件SPI外设与ST7735S显示

上一节用 GPIO 软件翻转 SCK、MOSI,并读取 MISO;这一节不再由 CPU 一位一位造波形,而是把字节写入 SPI1 的数据寄存器,由片上 SPI 外设自动完成移位、时钟和收发。老师没有推翻上一节的上层代码,而是只替换 底层:W25Q64 命令层与 基本不变。这正是“分层驱动”的意义。你没有 W25Q64,也可以保持同一思路:ST7735S 的命令、坐标和像素层不变,只把软件写字节函数换成 SPI1 硬件发送。应用层填充颜色/画点ST7735S 命令层CASET/RASET/RAMWR事务层

2026-09-15 16:23:14 143

原创 28_W25Q64软件SPI驱动与ST7735S迁移

函数先用2Ah指定列范围,再用2Bh指定行范围。随后发送2Ch,像素地址会在这个矩形窗口内自动递增:先走完一行,再进入下一行。全屏填色只需设置窗口为,然后连续发送个 RGB565 像素,不必为每个点重复发送坐标。这也是为什么在 RAMWR 之后保持 CS 为低并连续发送全部像素:减少命令开销,也符合显示 RAM 的顺序写入方式。老师的 W25Q64 代码展示了从“SPI 字节交换”到“器件命令”的分层方法;

2026-09-15 16:11:05 283

原创 27_SPI通信原理与四种模式

SPI 的本质是:主机先用 SS 选中从机,再按双方约定的 CPOL/CPHA 和位序提供时钟,使两个移位寄存器逐位交换数据;至于这些字节代表命令、地址还是数据,则由具体从机的数据手册定义。

2026-09-15 16:03:30 321

原创 I2C第一层:BH1750直线式轮询读写与重复默写

更新:2026-09-14。STM32F103C8T6,标准外设库V3.5.0。本版按你贴的MPU6050例程风格修改:动作后跟等待,一次读取完整写在一个函数中,main直接取得返回值。已替换前一版NVIC接收代码。现在没有I2C中断函数、RxFlag或接收状态机。分段学习:硬件初始化 → 发命令 → 一次读取 → 主循环显示。已核对课程Delay.c,它轮询SysTick计数标志,没有开启SysTick中断。本例因此省去中断屏蔽代码;以后加入中断时再补时序保护。

2026-09-14 19:22:43 348

原创 I2C 第一层复习:BH1750 光照读取与默写测试

更新日期:2026-09-14。STM32F103C8T6 + BH1750 模块 + 课程 OLED。使用 STM32F10x 标准外设库 V3.5.0,硬件 I2C2,PB10/PB11。根据你的实际器件替换原 MPU6050 实验。沿用课程初始化风格,BH1750 命令与测量流程依据 ROHM 手册补充,并非原课程 MPU6050 代码。第一层目标:独立初始化、发送测量命令、读取两字节,遮挡/照亮时看到读数变化。“必要函数”分成重点默写和可先沿用两组,避免一次背整套驱动。

2026-09-14 16:38:13 64

原创 26_硬件I2C片上外设与MPU6050驱动

硬件 I²C 的核心不是“记住一串库函数”,而是先让 I2C2 接管复用开漏引脚,再按主机传送序列执行“发出动作—等待事件—处理 DR—安排 ACK/STOP”;只要能把每个 EV 事件对应回外设内部状态,就能从手册推导出可靠的寄存器读写流程。

2026-09-13 14:38:32 167

原创 25_软件I2C与MPU6050驱动流程

对应课程:软件 I²C 读写 MPU6050整理日期:2026-09-13本节目标:不仅记住代码,还要能从“器件手册中的一次寄存器读写”推导出软件 I²C 驱动,并能迁移到手头的 GY-30(BH1750)

2026-09-13 14:36:31 88

原创 24_MPU6050结构参数与寄存器基础

正负表示沿该轴的两个方向。每个 16 位结果分为高、低两个 8 位寄存器存放。MPU6050 和 GY-30 都通过 I²C 输出 16 位测量结果,但 MPU6050 以寄存器方式提供有符号六轴数据,GY-30 以命令方式提供无符号照度数据;掌握地址、命令/寄存器语义、转换等待、双字节组合与量纲换算,才能把同一套 I²C 基本时序迁移到不同传感器。

2026-09-13 14:34:41 299

心情涂鸦板-利用Python编写代码

心情涂鸦板 利用Python编写代码,利用不同选项,可绘画出学生表达心情的图案,引导学生正视个人情绪并思考如何处理个人情绪,可以激发学生对于生活,学习的热爱与探索精神。活动包括个人体验、互动等环节,帮助同学们在轻松氛围中感受心灵共鸣,提升心理素质,营造积极向上的校园心理氛围。

2026-05-20

17-3Twitter评论情绪分类.ipynb

RNN、LSTM

2025-03-15

17-2LSTM网络.ipynb

LSTMCell实战文本分类

2025-03-14

17-1RNN循环网络.ipynb

RNNCell、数据读取、批次处理、序列上展开、初始化hiddenstate、文本分类

2025-03-14

16-2简单文本分类.ipynb

针对IMDB数据集进行简单文本分类。实战练习分词、创建词表、文本处理、批次处理、模型定义、模型训练。

2025-03-13

16-1文本表示&词嵌入.ipynb

实战练习分词、创建词表、文本处理

2025-03-13

空空如也

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

TA关注的人

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