- 博客(72)
- 收藏
- 关注
原创 esp32学习-按键操作
1.中断回调函数中IRAM_ATTR作用RAM_ATTR 是 ESP-IDF 中的一个函数属性宏,全称是 “Instruction RAM Attribute”,用于告诉编译器 将该函数放入 ESP32 的 IRAM(指令 RAM)中执行,而不是默认的 flash。ESP32 正常情况下大多数代码是从 Flash(外部 SPI Flash)中运行的。
2025-11-09 00:17:31
857
原创 ESP32学习-I2C(IIC)通信详解与实践
是一种由 Philips(飞利浦)发明的串行通信协议,用于主控与多个从设备之间的数据通信。特性说明通信方式串行通信(同步)连接方式只需两根信号线:SCL(时钟)和 SDA(数据)主从结构一个主控(如 ESP32)控制多个从设备唯一地址每个从设备有唯一的 7 位或 10 位地址半双工通信数据是双向的,但一次只能一个方向传输的作用是真正启用 I2C 控制器,它必须在之后调用,且主机模式下接收/发送缓冲区长度必须设为 0。
2025-08-03 23:07:38
1452
原创 ESP32学习-1.第一个程序helloworld
ESP32学习-1.第一个程序helloworld2.1芯片配置使用vscode打开官方示例代码选择芯片及程序烧录方式配置芯片参数选择烧录程序端口号编译程序
2025-07-29 22:54:40
325
原创 ESP32学习-FreeRTOS队列使用指南与实战
FreeRTOS 的缓存队列(Queue)是一种用于任务间通信的机制,允许任务或中断服务例程(ISR)以 FIFO(先进先出)的方式发送和接收数据。缓存队列可以传输固定大小的数据块,支持多任务并发操作,并通过阻塞机制实现同步。
2025-07-27 18:40:59
587
原创 c++学习-类中类成员变量的创建和释放顺序2-资源new出来的对象未被手动delete
析构时只会静态存储区资源都会被正常释放,堆区资源不会被释放。
2025-07-10 00:03:46
251
原创 c++学习-类中类成员变量的创建和释放顺序1-进程正常结束释放资源
C++ 中广泛应用 RAII(Resource Acquisition Is Initialization)模式,资源(如内存、句柄)在成员构造时获取,析构时释放。(类成员变量初始化以后才可以在构造函数中正常使用),保证构造过程中不会调用空、未初始化的资源。2.先创建类成员变量(按照声明顺序创建),再执行构造函数。先执行析构函数,再释放类成员变量。1.先执行基类构造函数,再构造子类。先释放子类,再执行父类析构函数。1.为什么要设计成先构造类成员变量,再执行构造函数?
2025-07-05 00:13:11
274
原创 c++类和对象-继承
作用:提高代码复用率,多个子类和父类有相同之处,又有自己各自的特点。例如基类人有四肢、会走路、说话,不同子类中国人是黑头发,说汉语,欧洲人黄头发,说英语。
2025-06-03 00:02:46
370
原创 c++ delete实现动作
不一定清除内存中的数值);2.不会将指向该内存的指针设置为nullptr空指针,对应指针会变成悬空指针,直接使用会出现未知行为。delete动作:1.清除指向的地址(操作系统。new申请的资源需要delete释放。总结:delete释放资源之后需要将。
2025-06-02 09:45:52
312
原创 stm32学习-CubeIDE开发
参考stm32开发常用开发环境(代码编写软件)MDK5:通用所有的ARM芯片,收费、界面功能原始CubeMx+MDK5:CubeMX图形化配置外设,生成CubeIDE(集成了CubeMX):st自家图形化编程,简单直观,生成只支持ST自家的芯片。
2024-05-29 16:42:20
675
原创 stm32学习-vs1053使用
1.不能一次性从sd卡中读取所有音频数据通过read每次从sd卡读取4096个字节,没次向vs1053发送32个字节,处理完以后再进行下一次读取,知道从sd读取数据长度小于4096说明一首歌曲文件读取完成或曲度错误。read函数读取文件可以指定每次读取数据长度,下次接着读取。2.单线程如何实现音乐播放同时按键检测。
2024-03-25 09:49:57
1802
原创 多线程编程
1.背景知识相比于多进程效率高,调度以线程为单位,分配内存以进程为单位。防止CPU一直被占用防止同一资源被多线程抢用使用互斥量:和一般变量的区别就是,通过上锁函数检测到锁被其他线程使用时时线程会。mutex状态为0表示共享资源正在被其他线程/进程访问,状态为1表示没有被线程/进程访问。
2024-03-25 09:32:28
257
原创 进程间常用通信方式
使用流程:创建/获取共享内存-附加共享内存(将内存链接进当前进程)-使用内存-分离共享内存-剥离共享内存。5.sockets套接字。
2024-03-21 09:30:17
295
原创 程序运行时,常见存储区分类及作用
作用 栈区(stack) 存放函数的形参和局部变量(auto类型),由编译器自动分配和释放。 生命周期与函数调用相关,函数结束时自动回收。 栈区的大小有限,通常较小。 例如,函数参数和局部变量。 堆区(heap) 由程序员手动申请和释放,需要注意避免内存泄漏。 存放动态分配的内存,如使用malloc或new。 生命周期由程序员控制,程序结束时可能由操作系统回收。 例如,动态分配的对象、数组等。
2024-03-19 10:18:34
659
原创 c++ 全局变量、局部变量、静态全局变量、静态局部变量
参考链接:C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:,,,,。函数执行时存在。
2024-03-19 10:09:24
604
原创 嵌入式学习-网络编程
1.端口、程序、进程关系,多进程监听同一端口(多个网络应用进程监听80端口)如何区分是那个进程的数据2.IP地址是如何被分配的3.如何解决僵尸进程问题添加语句signal(SIGCHLD,SIG_IGN)
2024-03-18 14:45:04
1143
原创 c++ 模板template
如下函数就只能接收int类型数据输入,并返回int类型,想处理string类型或者其他类型只能重新定义一个函数。使用template进行定义,可以同时适用于多种数据类型。有多个模板参数是,增加typename个数就行了。作用:通过template定义。
2024-03-15 22:10:45
424
原创 c++ 字符串常用api
1.截取substr(index,size),从下标index处截取长为size的内容。5.字符串分割,使用stringstream API,需要添加sstream类。6.查找子字符串find(),返回第一次出现的位置,没有会返回一个无穷大值。4.字符串长度size(),不包含最后的‘\0’字符。2.末尾添加字符push_back。3.字符串拼接,直接使用+运算。
2024-03-12 15:38:05
568
2
原创 浅拷贝和深拷贝
(改变一个变量的值,另一个变量也会改变),可以理解为就是创建了一个应用。浅拷贝只复制指向某个对象的指针,不复制对象的数据,新旧对象。深拷贝会复制原对象的额所有元素,
2024-03-11 10:52:04
359
原创 线程和进程
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响(一个工地烂尾不影响其他工地),但是一个线程崩溃整个进程都死掉(建房子任意一个环节出问题,工地就做不下去了)。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。内存分配:同一进程的线程共享本进程的地址空间和资源(同一工地的公共材料),而进程之间的地址空间和资源是相互独立的(两个工地老板都不同)简单理解进程是为了实现一个大的任务(修一栋大房子),每一个线程负责分工实现其中的各个部分(打灰,粉刷,通水,通电等等)
2024-03-10 12:46:50
433
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅