自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cJSON使用

json是一个轻量级的数据存储交换语言,其是通过键值对的形式存储的,例如:{ “key” : “value” }键需要使用双括号括起来,值如果是字符串也需要使用双引号括起来。cJSON 是轻量级的 C 语言 JSON 解析 / 构建库,核心围绕 cJSON 结构体展开。

2025-12-12 10:11:06 585

原创 MQTT移植到linux开发板

MQTTClient *handle, //客户端地址const char *serverURL, //MQTT服务器地址const char *clientId, //客户端IDint persistence_type, //客户端使用的持久化类型handle: MQTT客户端句柄;serverURL: MQTT服务器地址;clientId: 客户端ID;persistence_type:客户端使用的持久化类型MQTTCLIENT_PERSISTENCE_NONE:使用。

2025-10-30 10:40:52 819

原创 C++-类和对象

C++面向对象的三大特征是封装、继承和多态。文章首先介绍了封装的概念和意义,通过Student类示例展示了如何将属性和行为封装为一个整体。其次讲解了访问权限控制(public、protected、private)及其应用场景,强调将成员属性设为私有的优点。然后详细说明了构造函数和析构函数的作用及调用规则,包括拷贝构造函数的实现。最后区分了浅拷贝和深拷贝的概念,指出堆区属性需要使用深拷贝避免问题。全文通过代码示例演示了C++类与对象的核心概念和使用方法。

2025-10-08 08:14:43 732

原创 linux编写工程文件格式

小写 + 下划线:目录名统一用小写字母,单词间用下划线分隔(如third_party),符合 Linux 系统的命名习惯(避免大写,减少跨系统问题)。直观性:目录名直接反映内容(如src放源码,test放测试),无需额外解释。一致性:模块划分在src和include中保持一致,方便查找对应文件。可扩展性:预留third_party、scripts等目录,方便项目后期扩展。

2025-09-20 08:55:33 1371

原创 MarkDown语法使用

同时我也把他的安装包放到文章里的,官网下载慢的话,可以直接下载文章里的安装包。安装的时候自带的浏览里面可能选不了其他盘,我们可以自己修改他这个路径。[[MarkDown语法#5.1.3 设置链接显示的信息]]跳转[[MarkDown语法#4.引用|自定义显示名称]]笔记。把要跳转需要查看的内容直接嵌入到下面,在跳转链接符号前加上!跳转[[MarkDown语法#4.引用]]笔记。只需要开头输入,后面回车自动生成下一个列表。跳转[[MarkDown语法]]笔记。当引用的内容太长的时,可以在。

2025-09-06 10:27:28 1057

原创 ESP32分区表

ESP32-S3的Flash分区表位于0x8000偏移地址处,长度为4KB,最多支持95个分区条目。分区表支持内置和自定义两种方式:内置分区表提供单程序(不含OTA)和带OTA升级两种模式;自定义分区表通过CSV文件定义,支持灵活配置各类分区。分区类型包括app(应用程序)和data(数据存储),子类型根据功能细分,如factory、ota、nvs等。每个分区需4KB对齐,未指定偏移地址时自动计算。分区表通过MD5校验确保完整性,为ESP32-S3的多应用程序和数据管理提供基础支持。

2025-09-06 10:21:15 950

原创 ESP32-S3_ES8311音频输出使用

新建config.h文件在这个里面放置宏的定义。更换main.c上面的头文件。按照下面图中进行修改当你工程找不到头文件如上面图中的头文件下面有波浪线时,可以打开控制面板(ctrl+shift+p),选择添加VS Code配置文件这样就可以正确找到头文件的路径了。继续回到添加宏定义。添加IIC引脚,从原理图上可以看到sda,scl引脚为GPIO_NUM_1和GPIO_NUM_2。添加es8311配置。从原理图上可以看到EP接到地上,对应地址为0x18,填ES8311_ADDRRES_0即可。

2025-08-16 15:37:06 2106

原创 Air780E连接腾讯云

手把手教你使用腾讯云IOT包含产品创建,MQTTx客户端连接,串口AT指令连接,单片机连接。

2025-07-11 03:15:00 374

原创 ESP32-S3_ES7210音频芯片使用

ES7210是一款音频ADC芯片,专门负责连接麦克风,通过IIS将麦克风的数据发送给esp32。同时esp32通过IIC接口对es7210内部寄存器进行配置。一共支持连接4个麦克风,14/15连接麦克风1,19/20连接麦克风2,31/32连接麦克风3,27/28连接麦克风4。

2025-07-08 10:37:11 3260

原创 MQTT详讲-小白入门

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。用来在保证消息的可靠传输,如果设置为1,则在下面的变长中增加MessageId,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。(3)RETAIN: 发布保留标识,表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它,如果设有那么推送至当前订阅者后释放。(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);

2025-06-10 15:26:51 1023

原创 硬件电路设计-开关电源设计

这里以杰华特的JW5359M 开关电源为例,介绍各个部分的功能电路。当EN引脚电压低于0.4V时,整个稳压器关闭,稳压器消耗的电源电流降至1μΑ以下。

2025-06-07 15:19:16 1658

原创 硬件电路设计—电平转换

这种方式的优点:成本低;劣势:低电平下会被三极管的饱和管压降抬高(通常在 0.1v 左右,不影响通信);开关速度不够,超过 460800 波特率时不建议用这种方式。在双方串口电平差别不大的情况下,并且低电压那端的芯片的引脚耐压值大于高电压输入端电压时,可使用串联一个1K电阻的方案,进行连接。在串口波特率不高的情况下(如 115200),可以通过 NPN 晶体管的方式进行电平转换。对成本不敏感的话,优先考虑用电平转换芯片,无论速度,可靠性都很完美。

2025-06-07 10:31:04 637

原创 FreeRTOS-任务控制块/配置文件

tskTaskControlBlock(简称 TCB)是 FreeRTOS 中最重要的数据结构之一,用于存储和管理任务的所有状态信息。它就像任务的 “身份证”,包含了任务的优先级、堆栈指针、状态等核心数据。临界区:通过 taskENTER_CRITICAL() 和 taskEXIT_CRITICAL() 保护关键代码段,防止中断或任务抢占。优势:无需创建额外对象,直接向任务发送通知,开销更小(约为信号量的 1/3)。作用:保存任务上下文切换时的现场(如寄存器值),是任务恢复执行的关键指针。

2025-05-30 10:00:00 563

原创 搭建MQTT服务器

帮助文档地址: https://www.emqx.io/docs/zh/v5.0/admin/api.html#%E8%AE%A4%E8%AF%81。:18083/api-docs/index.html来查看API文档,同时也可以直接在Swagger UI 上尝试执行一些 API。客户端授权页面可以配置每个客户端(设备)的主题发布,订阅权限。服务器地址填写ip地址。可以看到此时MQTT客户端已经可以和控制台进行通信,说明MQTT连接没有问题。1.首先进行Navicat客户端的连接测试,看是否可以正常连接。

2025-05-29 11:37:18 2273

原创 QT6搭建和使用MQTT

编译成功文件夹里会生成一个build的文件夹,里面包含Desktop_Qt_6_5_3_MinGW_64_bit-Release这个文件。连接EMQ 免费提供的公共 MQTT Broker,基于 EMQX Platform 构建。点击运行,如果之前配置没有出错的话,这里可以出现运行界面。libQt6Mqtt.a Qt6Mqtt.prl文件。这里使用的是VScode的终端,使用cmd也可以。代理:broker.emqx.io。SSL/TLS 端口:8883。SSL/TLS 端口:8883。

2025-05-29 11:33:15 2473 7

原创 使用MQTTX软件连接阿里云

开始订阅一共需要订阅两个,分别是云端响应属性上报(查看平台是否接收到数据),设备属性设置(查看平台下发的数据)。还不行的话,再检查一下上面的数据有没有填错,数据建议直接复制,不要手敲。这篇文章里有详细的创建过程,这里就不再重复了,需要的可以点击了解一下。可以看到软件上有平台接收成功的提示,并且平台上也将数据进行了修改。修改数据后,点击设备观察MQTTx有没有接收到。这里填写设备属性上报的topic。属性上报:设备将数据上报给平台。属性设置:平台将数据下发给设备。可以看到有正确的接收到数据。

2025-04-03 10:10:29 1202

原创 ESP32-TF卡的使用

在ESP - IDF中对FATFS进行了封装和适配,通过esp_vfs_fat组件来挂载和操作FAT系统,并提供了一套文件系统接口,这些接口基于标准的 C 库文件操作函数(如 fopen、fread、fwrite 等),并在底层进行了适配和扩展。通过这些接口,开发者可以使用统一的方式操作不同的文件系统,而无需关心具体的实现细节。如果想使用FATFS原生的函数只需包含ff.h即可。关于FATFS这篇文章里有详细的介绍,有兴趣可以看一下。

2025-04-02 11:55:58 1381

原创 ESP32-S3-IIC

关于IIC的介绍和原理不清除的可以参考我的这篇文章,这里我就不在叙述了。

2025-04-02 09:10:19 1519

原创 ESP32-S3-外部中断

注:本系列使用的是VSCode+ESP-IDP的编译器,默认都已经配好环境。

2025-03-31 13:51:05 1655

原创 Keil5+Astyle插件自动对齐

分享一个在keil5上好用的插件,Astyle——代码自动对齐。

2025-03-31 08:56:33 981 2

原创 C语言-排序

每比较一轮,记录交换的次数。当交换的次数为零时,则表示排序完成。依次比较后面的数据,将数据小的放到前面。两两比较,大的放后面。

2025-03-22 15:52:30 314

原创 FATFS文件操作系统

FATFS 是一个完全免费开源的 FAT/exFAT 文件系统模块,它完全用标准 C 语言(ANSI C C89)编写,它支持 FATl2、FATl6 和FAT32。

2025-03-13 14:03:59 736

原创 LDLRR410静态雷达使用

若雷达在设置的区域内检测到的目标数量M大于N,则按照目标的径向距离输出N个最近的目标。如检测到的目标数M小于N,则按照距离雷达由近到远的顺序输出实际检测到的M个目标。其中long2为Y轴最远距离,Lat2为X轴左侧最远的距离。long1为Y轴最近距离,Lat为X轴右侧最远距离。要设置的矩形区域为6*20,最大输出目标个数为63。2点的坐标为(20,-3)。Max OutputTargetNum: 设置的检测范围内允许输出的最大目标个数 N。将数据按照上面表格的内容填入进行计算出最终的数据。

2025-03-13 14:03:25 789

原创 linux-进程

进程是处于活动状态的程序,linux系统是多任务操作系统,可同时进行多个程序完成多项工作。可通过ps -e列出所有的进程,-f 显示进程的全部信息,-l以长格式显示进程,-r只显示正在运行的进程。linux系统中每一个进程都有一个进程号(PID),进程号是一个正数,用于唯一标识系统中的某一个进程。

2025-03-13 14:00:40 878

原创 单片机死机跑飞的原因

记录一下导致单片机跑飞可能出现的原因。

2025-02-28 17:05:53 1059

原创 Windows配置添加右键菜单——在VSCode中打开

添加图标,回到注册表编译器里在vscode文件夹里新建一个名为"Icon"的文件,注意第一个字母"I"大写,不然图标出现不了。在桌面上找到 VScode的图标,右键找到属性,点进去。这一行就是他的可执行路径了。修改文件的数值为VS code可执行路径并在后面加上"%1"。如果安装的时候没有选中的话,可以通过注册表来手动进行添加。可以看到图片已经出现,并且可以正常的转到VS Code里。到这时就可以看到,右键出现VS Code的快捷方式了。可以在装VSCode的时候选中这两个选项。右击右边的文件,进行修改。

2025-02-24 11:38:25 1002

原创 LVGL教程1-手把手移植LVGL

在GUI_APP文件夹里放入上一步裁剪好的demos文件夹,在lvgl(最里面的那个文件)文件夹里放入其余的文件。打开lv_port_disp_template.c和.h文件的条件编译指令。编写或移植一个定时器中断的函数,在回调函数中放入该函数。将lv_conf_template.h重命名为lv_conf.h。1.这里将屏幕触摸当成输入,其余的删掉(鼠标,键盘,编码器,按键)。在lv_conf.h文件里将LV_USE_DEMO_STRESS 置一。下面对应的函数类似,只保留触摸的,其余的删掉。

2025-02-21 15:56:23 975

原创 STM32-启动文件

STM32 启动文件由 ST 官方提供,由汇编编写,是系统上电复位后执行的第一个程序。启动文件主要做的工作。1.初始化堆栈指针 SP = _initial_sp2.初始化程序计数器指针 PC = Reset_Handler3.设置堆和栈的大小4.初始化中断向量表5.配置外部 SRAM 作为数据存储器(可选)6.配置系统时钟,通过调用 SystemInit 函数(可选)7.调用 C 库中的 _main 函数初始化用户堆栈,最终调用 main 函数。

2025-02-05 13:40:54 1882

原创 git使用-小白入门2

每个分支都有自己的最新代码,可以同时进行完全不同的作业。在这个状态下像正常开发那样修改代码,执行git add命令进行提交的话,代码会提交至feature-A分支。在feature-A里已经实现完毕,要把他合并到主干分支(master)里。在master分支前面有一个’*'号表示当前位于的分支。从 master 分支创建 feature-A 分支和 fix-B 分支。可以看到成功创建了feature-A的分支并当前位于这个分支下。通过这个命令可以将分支名列表显示,同时可确定当前所在分支。

2025-01-14 11:02:08 395

原创 git使用-小白入门

版本库⼜名仓库,英⽂名repository,你可以简单理解成⼀个目录,这个目录⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。git status命令可以让我们时刻掌握仓库当前的状态,上⾯的命令告诉我们,readme.txt被。简单解释⼀下git commit命令,-m后⾯输⼊的是本次提交的说明,可以输⼊任意内容,当然。我们已经成功地添加并提交了⼀个readme.txt⽂件,现在,是时候继续⼯作了,于是,我。

2024-12-27 15:41:57 1032

原创 QT-手把手制作一个串口助手

每点击一下刷新按键,就会进入一下该函数,首先会清除com_com下拉框的内容。在MainWindow::MainWindow()函数里进行串口接收与函数的链接,当串口有数据接收时自动进入到关联的函数里运行。当然点每个按键都是不管用的,因为我们还没有写具体的代码,下面开始编写各按键的功能。首先设置主窗口的大小,点击画布,然后到右下角的属性编译器里进行修改大小。在private:里定义一个发送模式的标志位,默认为0,字符串发送。在private:里定义一个显示模式的标志位,默认为0,字符串显示。

2024-12-18 16:55:34 2541

原创 QT打包成EXE文件

双击进去,找到release文件下的exe文件。注意此时该文件是不完整了,只能在你电脑上运行,在其他电脑上运行不了,其他电脑上没有该环境。然后该文件夹里会出现很多文件。结束完成后会在刚指定的路径下生成最终的文件,文件名以_boxed.exe结尾。该下图这个步骤运行,然后回到build文件里。该文件就是最终可脱离这台电脑执行的文件了。在3里面复制新建文件夹里的所以文件到这。将上面找到的exe文件放到该文件夹下。正常情况下,在该文件下有两个这文件。cd 进入到新建文件夹的路径下。此时该文件夹会多出来这个文件。

2024-12-18 16:51:53 585

原创 使用STM32CubeMX配置串口各种功能

通过接收+空闲中断或者空闲中断+DMA的方式进行接收不定长数据

2024-12-03 16:07:10 2202

原创 STM32CubeMX-下载及使用

下载安装STM32CubeMX和使用

2024-12-03 13:15:20 3313 1

原创 单片机面试

答案:宏定义是在编译预处理阶段被处理的。预处理包含:头文件包含,宏替换,条件编译,去除注释,添加行号。

2024-11-15 14:13:23 1229

原创 CAN通信

STM32内置bxCAN外设(CAN控制器,bx表示支持CAN扩展格式),支持CAN2.0A和CAN2.0B,可以自动发送CAN报文和按照过滤器自动的接收指定的CAN报文。波特率最高可达1M位/秒3个可配置优先级的发送邮箱。2个3级深度的接收FIFO14个过滤器支持时间触发唤醒,自动离线恢复,自动唤醒,禁止自动重传,接收FIFO溢出处理方式可配置,发送优先级可配置,双CAN模式。

2024-11-15 13:49:59 1729

原创 linux-音乐播放

【代码】linux-音乐播放。

2024-11-04 10:26:59 336 1

原创 使用Linux连接阿里云

将BLD_CFLAGS := $(CFLAGS) -Wall -Werror注释,并添加BLD_CFLAGS := $(CFLAGS) -Wno-error。打开demos文件夹里的mqtt_basic_demo.c文件,将这4个信息修改为自己的。将sub_topic改为自己的要订阅的主题,格式为自定义Topic(/这篇文章有详细的创建设备的步骤,这里就不啰嗦了。1.将生成的SDK放到linux中,并解压。下载SDK,按照图中所选的进行生成SDK。pub_payload为发送消息的内容。

2024-11-01 17:12:23 1383 1

原创 FreeRTOS信号量

信号量是一种实现**任务间通信的机制**,可以实现任务之间**同步或临界资源**的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。

2024-11-01 11:20:21 1185

原创 SPI通信协议

全双工,一主多从,同步。四根线:片选SS(CS),主发从收MOSI(DO),主收从收MISO(DI),时钟SCK。

2024-10-24 11:05:12 516

paho.mqtt.c-1.3.8.tar

paho.mqtt.c-1.3.8.tar

2025-10-24

esp-bsp-master

esp-bsp-master

2025-08-18

Obsidian-1.8.10

Obsidian-1.8.10

2025-08-09

BIN文件查看器:free-hex-editor-neo

BIN文件查看器:free-hex-editor-neo

2025-08-04

JW5359M数据手册

JW5359M数据手册

2025-06-07

Navicat下载和使用

Navicat下载和使用

2025-05-17

Navicat下载和使用

Navicat下载和使用

2025-05-17

ESP8266连接腾讯IOT,阿里云AT固件

ESP8266连接腾讯IOT,阿里云AT固件

2025-04-20

腾讯云UserName,Password生成器

腾讯云UserName,Password生成器

2025-04-14

使用MQTTX软件连接阿里云

使用MQTTX软件连接阿里云

2025-04-03

Keil5+Astyle插件自动对齐

Keil5+Astyle插件自动对齐

2025-03-31

LDLRR410静态雷达使用

LDLRR410静态雷达使用

2025-03-13

FATFS文件操作系统模板

FATFS文件操作系统模板

2025-02-27

lvgl-STM32F103ZET6-模板

lvgl_STM32F103ZET6_模板

2025-02-21

lvgl官方库文件8.2版本

lvgl官方库文件8.2版本

2025-02-21

QT-手把手制作一个串口助手

QT-手把手制作一个串口助手

2024-12-18

enigmavb打包软件

enigmavb打包软件

2024-12-05

串口:空闲中断+DMA转运接收不定长数据

串口:空闲中断+DMA转运接收不定长数据

2024-12-03

串口:接收+空闲中断接收不定长数据

串口:接收+空闲中断接收不定长数据

2024-12-03

空空如也

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

TA关注的人

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