自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深度解析 AES 加密:原理、核心机制与关键参数及QT如何使用AES加密库

AES 加密作为对称加密的标杆技术,其核心优势在于 “安全与效率的平衡”—— 通过置换 - 代换网络的多轮迭代,结合 128/192/256 位密钥的高强度保护,实现了抗攻击能力与运算效率的统一。理解 AES 的关键在于把握四大核心:原理上的 “分组加密 + 多轮迭代”、位数上的 “固定分组长度 + 可变密钥长度”、运算上的 “字节代换 + 行移位 + 列混合 + 轮密钥加”、辅助机制上的 “填充方式(解决明文长度问题)+ IV(避免密文重复)”。

2025-11-20 10:07:09 669

原创 FreeRTOS学习记录(2):内存管理、中断处理、定时器、优先级继承 (万字长文)

核心本质:基于系统 Tick 计数的 “延时触发器”,系统每产生一个 Tick(由硬件定时器周期性触发,周期由配置,如 1ms/Tick),软件定时器的计数器减 1,当计数器减至 0 时,触发预设的回调函数。分类单次定时器:触发一次回调函数后自动停止,需手动重新启动。周期定时器:周期性触发回调函数,直至被手动停止。本质:一块连续的内存区域,采用 “环形缓冲区” 结构,支持数据的写入(发送)和读取(接收),无需固定数据块大小(队列需提前定义数据项大小)。

2025-11-19 11:33:26 602

原创 FreeRTOS学习记录(1):任务创建及任务间如何通信

在嵌入式开发中,随着功能复杂度提升,传统裸机开发的 “顺序执行 + 延时阻塞” 模式逐渐暴露瓶颈:实时性差、资源利用率低、功能扩展困难。FreeRTOS 作为一款轻量级实时操作系统,通过多任务调度机制完美解决这些问题,成为嵌入式开发的主流选择。FreeRTOS 是一款开源的实时操作系统内核(RTOS),核心功能是任务调度—— 通过优先级机制让多个任务 “并发” 运行(逻辑上的并行,物理上由 CPU 分时切换实现)。实时性:高优先级任务可抢占低优先级任务,确保紧急事件优先处理;资源高效。

2025-10-29 11:00:00 1426

原创 MySQL 基础操作

MySQL 作为目前最流行的关系型数据库管理系统之一,其简洁高效的操作方式深受开发者青睐。本文将从基础语法入手,涵盖数据定义、操作、查询及控制等核心内容,并解答常见疑问,帮助初学者快速掌握 MySQL 的基础使用。mysql下载链接 : MySQL :: Download MySQL InstallerDBvear下载链接 : Download | DBeaver CommunitySQL(Structured Query Language)是操作数据库的标准语言,根据功能可分为四类:数据定义语言(DDL)

2025-10-28 11:36:05 726

原创 QWidget_eventFilter事件过滤:监控某个控件的某个事件

在 Qt 界面开发中,图表控件 QCustomPlot 以其强大的绘图能力和灵活的交互性被广泛应用。但有时我们需要对图表的交互行为进行定制,比如右键点击触发坐标轴缩放、拦截特定按键实现快捷操作等。这时候,Qt 的事件过滤机制就成为了实现这一需求的理想选择。

2025-10-23 15:13:23 396

原创 AT24C02 EEPROM 存储结构和时序时序时序操作

AT24C02 是由 Atmel(现已被 Microchip 收购)推出的一款低功耗、串行 I²C 接口的电可擦除可编程只读存储器(EEPROM),广泛应用于嵌入式系统中存储配置参数、校准数据等需要掉电保存的信息。存储容量:2Kbit(256 字节),即 2048 位数据存储空间接口类型:I²C 总线(支持标准模式 100kHz 和快速模式 400kHz)工作电压:通常为 2.5V~5.5V(宽电压范围适配各类嵌入式系统)擦写次数:典型值 100 万次(数据保存年限可达 100 年)封装形式。

2025-10-15 17:58:55 822

原创 单片机睡眠模式详解:睡眠、停止与待机

单片机在实际应用中,常常需要在等待任务或空闲时降低功耗,延长电池寿命。为此,现代单片机都提供了多种睡眠模式(低功耗模式),通过关闭不必要的硬件模块和降低时钟频率来减少能量消耗。

2025-10-11 09:00:00 1616

原创 MCU_WatchDog:独立与窗口看门狗解析

看门狗是单片机系统稳定性的重要保障,独立看门狗以 “独立时钟、全局监控” 适用于主时钟故障场景,窗口看门狗以 “时间窗口、精准监控” 适用于时序严格场景;二者 “开启后无法软件关闭” 的设计,是为了避免异常时监控失效;若需关闭,需通过系统复位后不启动的方式实现。实际应用中,需根据场景选择看门狗类型,合理设置超时时间 / 窗口值,确保既能快速响应程序跑飞,又不影响正常执行,最大化提升系统可靠性。

2025-10-10 11:24:20 1260

原创 QSettings 详解:Qt 应用程序的配置管理库

在开发桌面或移动应用时,几乎都需要保存用户的配置信息,例如窗口大小、主题颜色、登录状态等。Qt 提供了一个非常方便的类 ——,用于读取和写入应用程序的设置。它不仅跨平台,还能自动适配不同操作系统的标准配置存储位置,大大简化了配置管理的工作。

2025-09-25 11:45:45 853

原创 QTableWidget 选中行后,修改文字颜色不立即显示问题解析与解决

最近在 Qt 软件开发中,需要用到QTableWidget这个组件,然后需要有一个修改完时间后时间的颜色需要改变的功能,但是我发现在选中后修改颜色是不会立马改变的,需要选中别的行后才会发生颜色改变,所以认为应该是QTableWidget默认的高亮状态给覆盖了,本文将深入分析该问题成因,并提供完整的解决方案。​。

2025-09-24 11:56:04 752

原创 深入理解 Qt 中的 QEventLoop

QEventLoop本质上是一个事件循环机制的实现,它可以理解为一个 "循环处理器":不断从事件队列中取出事件(如用户输入、定时器触发、网络数据到达等),并将其分发给对应的对象进行处理,直到满足退出条件(如调用quit())才终止循环。在 Qt 应用中,通常会有一个主事件循环(由启动),负责处理整个应用的生命周期事件。而QEventLoop允许开发者创建局部事件循环,在特定场景下临时处理事件,而不阻塞主循环的执行。QEventLoop。

2025-09-19 10:00:00 1864

原创 Qt 中 connect 函数第五个参数的作用解析

单线程应用中,默认的通常能满足需求,无需额外指定多线程环境下,若需异步通信且保证线程安全,优先选择当需要同步等待跨线程操作结果时,可使用,但需谨慎处理死锁风险在需要动态管理连接生命周期的场景,建议结合使用。

2025-09-18 11:28:51 1166

原创 QT:QCustomPlot图标内更改鼠标指针样式(CursorShape)

枚举值中文名称作用说明使用场景空白光标完全透明(隐藏鼠标)全屏场景(视频播放、演示模式)垂直分割光标竖线 + 左右箭头(↔↔)垂直分割窗口(QSplitter 拖动)水平分割光标横线 + 上下箭头(↕—↕)水平分割窗口(QSplitter 拖动)枚举边界标记无实际形状,标记标准光标的最后一项枚举范围判断(如遍历所有标准光标)位图光标标记标记自定义位图光标的起始类型区分系统光标与自定义位图光标自定义光标标记标记完全自定义光标的类型高级自定义(动画光标、异形光标)

2025-09-15 13:53:06 862

原创 Gui Guider-1.9.0-GA LVGL ESP32 ST7789最新版 配置教程

Guider 和 LVGL(Light and Versatile Graphics Library)之间的关系主要体现在图形用户界面(GUI)设计和开发的上下文中。LVGL 是一个用于嵌入式系统的开源图形库,它提供了创建复杂且美观的图形界面所需的各种工具和组件。而 Guider 则是与 LVGL 相关联的一个图形界面设计工具,专门用来简化 LVGL 应用的设计过程。LVGL:作为核心,LVGL 提供了构建嵌入式系统图形界面的基础功能。

2025-05-06 11:20:26 2685 5

原创 Esp32 ST7789 + LVGL屏幕配置文档(从零开始)

在文件中修改引脚定义。需要注意的是,如果你的SPI屏幕上没有DC,而是A0,那么A0就是DC,他们的作用相同。这里就跟据自己去接的引脚去改就可以,或者跟笔者的引脚对着去接也可以。LVGL(Light and Versatile Graphics Library)是一个免费开放源代码的图形库,专为嵌入式系统设计,用于创建具有吸引力的图形用户界面(GUI)。它支持多种显示设备,并且可以在资源受限的硬件上运行,比如微控制器。

2025-04-26 09:32:34 1271

原创 QT 踩坑记录(持续更新,有需要的可以进来搜索下文字看有没有你遇到的坑)

当需要在子窗口之间传递信息时,应该通过主窗口作为中介,利用Qt的信号和槽机制来实现。这样不仅能保持代码的清晰度,还能有效防止跨线程操作带来的风险。:确保所有的子窗口都在主窗口中进行创建和销毁操作,而不是在子窗口之间直接实例化。这样做可以避免由于多次实例化导致的资源竞争或数据不一致问题。: 在使用主窗口控制多个子窗口的应用架构中,如果子窗口之间直接实例化对方,可能会导致一些不可预见的问题。例如,在这次的案例中,类中被实例化,导致了重复调用。: 2025年3月29日。

2025-03-29 11:36:10 260

原创 QT串口数据readAll接受不全的解决办法

通过采用缓冲区管理和协议解析的策略,我们可以有效地解决串行端口数据接收不全的问题。此方法不仅提高了数据接收的准确性,也为后续的数据处理提供了便利。请根据您的具体应用场景调整代码中的细节,特别是关于数据包的开始、结束标识符或其他特征的识别,以便准确无误地实现数据包的拼接与处理。

2025-03-22 15:03:43 806

原创 Qt 实现高仿微信的滑动截屏工具(二:新增可拖拽截图框与位置显示)

截图后可移动矩形:通过和实现。当前截图位置显示:通过和实现。截图 Icon 设计:通过setMyStyle为按钮设置图标和样式。源码已经给小伙伴们整理好了,微信搜索 嵌入式工程之家 关注公众号回复 截图 即可获得源码和详细操作指示哦~

2024-12-24 15:40:31 380

原创 使用 QScreen 获取屏幕信息:详细指南

QScreen是 Qt 框架中的一个类,用于表示和管理屏幕的属性和状态。它提供了对屏幕分辨率、颜色深度、可用几何形状、刷新率等信息的访问,并允许你执行一些与屏幕相关的操作,如捕获屏幕内容。QScreen是QWindow和QWidget的父类的一部分,通常用于处理多屏环境下的窗口管理和图形渲染。

2024-12-21 15:55:52 2330

原创 Qt 实现高仿微信的滑动截屏工具(一)

最近在完善简易QQ项目的过程中,我在基本布局的基础上添加了一些新功能,其中截图功能是首要实现的功能之一。鉴于网上缺乏现成的开源截图软件,我决定自己开发,并在此分享我的源码。初期的实现较为简单,仅涵盖了截图的基本功能。未来若有时间,我会继续对其进行优化和扩展。接下来,直接进入正题。

2024-12-20 16:31:57 1310 1

原创 应届生嵌入式软件面试题大全,顺便分享下我的经验(1)(真实企业出现!)

您好,我叫张三,毕业于XX大学,电子科学与技术专业。目前我在XX公司担任嵌入式软件工程师,主要负责嵌入式系统的开发和维护工作。在过去的工作中,我积累了丰富的项目经验,包括Linux内核开发、驱动程序编写、单片机编程、以及嵌入式系统的优化等。我对技术充满热情,喜欢不断学习和挑战自己。业余时间我喜欢阅读技术书籍和参加技术社区的活动,以保持自己的技术水平与时俱进。我相信我的技能和经验能够为贵公司带来价值,也希望能够在贵公司找到一个展示自己能力的平台。

2024-11-22 10:45:25 1003

原创 国产化云平台实践:定制OpenStack Cinder存储驱动

VMware 的主要贡献在于虚拟化技术的发展,尤其是其推出的 VMware GSX Server 和 ESX Server(现称 vSphere)等产品,为数据中心带来了革命性的变化。这在目前全面国产化的潮流种会被无情的淘汰,所以OpenStack的特点,真正成为了他的 "特点"。想知道这个,那么我们首先要知道OpenStack的同源产品,没错,你肯定听说过,而且不少人正在用,它就是VMware。我们可以参考大厂的一些cinder驱动,这样肯定是最方便,最简洁的。前人栽树,后人乘凉嘛。

2024-10-17 16:44:35 1223

原创 C++ STL全面解析:六大核心组件之一----序列式容器(vector和List)(STL进阶学习)

vector的数据结构跟array是非常相似的,只不过他们有一点不同,那就是array在定义时会被限制住大小,是静态的容量。而vector则是动态的容量,可以根据插入数据的数量去自动扩容容量。我们不必再去担心初始化数组的时候去定义一个大块头,使用vector时这个顾虑将烟消云散。vector的实现技术关键在于对其大小的控制以及重新分配时数据迁移的效率,一旦vector的空间满载,如果客户端每新增一个元素,vector随之去增加一个元素这种效率肯定是很慢的。所以vector是采用的未雨绸缪机制。

2024-09-21 10:25:17 1352

原创 C++ STL全面解析:六大核心组件之一----迭代器(STL进阶学习)

C++标准模板库(STL)是一组高效的数据结构和算法的集合,广泛应用于C++程序设计中。

2024-09-18 15:31:15 1188

原创 C++ STL全面解析:六大核心组件之一----分配器(STL进阶学习)

C++标准模板库(STL)是一组高效的数据结构和算法的集合,广泛应用于C++程序设计中。

2024-09-06 08:47:55 1142

原创 C++基础知识(STL标准库容器适配器(Stack和Queue))

可能很多人在初期都没有了解过或者听过这个概念,只知道STL里面有多个容器,以及一些算法和迭代器。容器适配器的概念就是他并不是一个独立的结构,而是起来与其他的容器进行存储的,所以他叫”适配“嘛。虽然Stack和Queue的功能相比于其他标准容器的确有些少,但是其中的特点还是可以被作用于一些特定的场景。例如之前在写一个计算的时候,就是用的stack先进后出的特性去实现了多功能运算。

2024-09-05 10:30:06 583

原创 深入解析OpenStack Cinder:块存储服务详解

OpenStack是一个开源的云计算管理平台项目,它是一套用于部署和管理云端计算资源的软件。OpenStack提供了基础设施即服务(IaaS)的应用程序,允许用户和管理员从个人电脑到大型多租户环境部署和管理大量的计算、存储和网络资源池。OpenStack的核心服务包括Nova(计算)、Neutron(网络)、Cinder(块存储)、Swift(对象存储)、Glance(镜像服务)和Keystone(身份验证服务)等。Cinder是OpenStack中的块存储服务,主要用于为虚拟机提供持久性块存储设备。

2024-09-02 14:12:19 2213

原创 OpenStack Neutron服务错误:(RemoteError: Remote error: DBError (pymysql.err.InternalError) (1054, u“Unkn)

显示DBERROR,说明数据库错误,里面貌似是少了一个subnets.project_id这个列,但是往往数据库不可能只出一个错,我就算手动加上了估计也会还有其他少的。这边其实很奇怪,服务是正常运行的,但是下方当时有个版本错误,我查了一下,貌似是关于什么版本的问题,因为我当时使用pakcetstack一键安装的,所以我当时以为是他安装的版本问题,这。网络这方面是由Neutron负责的,所以我们可以去排查一下关于Neutron方面的问题。既然是数据库的问题,那就根据我们的配置文件再次同步一下数据库。

2024-08-25 16:27:28 650 1

原创 ARM 裸机与 Linux 驱动对比及 Linux 内核入门

目录ARM裸机代码和驱动的区别Linux系统组成内核五大功能设备驱动分类内核类型驱动模块驱动模块示例Makefile配置命令编码辅助工具内核中的打印函数printk 函数修改打印级别​编辑打印级别含义7. 驱动多文件编译示例8. 模块传递参数命令行传递参数支持的数据类型module_param 函数MODULE_PARM_DESC 函数示例module_param_array 函数共同点:不同点:(__init可以不指定,及可以不写,但是正常是写的)Makefile配置命令安装驱动模块:

2024-08-17 15:53:20 1636

原创 ARM 处理器异常处理机制详解

处理器遇到异常后会暂停当前的程序转而去处理异常(执行异常处理程序),处理完成后返回到被异常打断的代码处继续执行。全部都保存到了异常模式栈,最后将修改完的被打断程序返回地址入栈保存,之所以保存该返回地址就是将来可以通过类似:MOV PC, LR的指令,返回用户程序继续执行。异常发生后,要针对异常类型进行处理,因此,每种异常都有自己的异常处理程序,中断异常处理过程通过系统中断处理来进行分析。需要注意的是,在跳转到异常处理程序入口时,已经切换到对应异常模式下了,因此这里的。

2024-08-16 08:39:47 1386

原创 如何在银河麒麟操作系统上搭建 Electron (含 Electron 打包指南)

随着跨平台应用开发的需求日益增长,Electron 和 Qt 成为了两种广受欢迎的选择。Electron 以其简单易用、快速开发的特点吸引了众多前端开发者,而 Qt 则因其强大的图形界面支持和高效的性能表现受到了许多专业软件开发者的青睐。银河麒麟操作系统作为一款基于 Linux 的国产操作系统,其安全稳定的特点使得它成为了政府机构和企业用户的优选。

2024-08-08 16:49:15 5203 2

原创 ARM 汇编语言基础

基础概念;(相当于c中的’#‘的内容)告诉编译器怎么编译)(如:cpu中没有乘法器,对应没有乘法指令,3*3 ---》用加法器实现3+3+3,替换实现)/**/

2024-08-06 10:21:31 1535

原创 ARM 架构与技术综述

(任务的切换会切入这个模式,权限最高的模式,刚启动的时候在这个模式下,权限高,可以做一些核心的操作。:当前程序状态寄存器 (current program status register, cpsr):存储当前程序运行状态。:保存程序状态的寄存器 (saved program status register, spsr):用于保存 CPSR。:程序计数寄存器 (program counter, pc):存放当前取指指令的地址。特定的模式拥有特定的权限,执行特定的代码,完成特定的功能。

2024-08-03 16:42:41 2016

原创 计算机基本理论与程序运行原理概述

指令解析的过程分为三个阶段:取指、译码和执行。为什么不同处理器需要不同的编译器编译程序代码?CPU 仅能识别特定的机器码,这些机器码由处理器的硬件结构决定,因此不同的处理器架构需要使用相应的编译器来生成对应的机器码。

2024-08-03 16:26:46 646

原创 K8s对接Ceph-csi配置手册(附带踩坑记录以及解决方法)

Kubernetes (K8S) 是一个流行的容器编排平台,而 Ceph 是一个分布式存储系统,提供了对象存储、块存储和文件系统等多种存储服务。在 Kubernetes 中使用 Ceph 作为持久化存储后端是一种常见的部署模式。

2024-07-30 09:51:03 4132

原创 掌握PWM:STM32F103实现PWM控制直流电机小风扇

点击共有两条线,一条接到高电平,一条接到低电平即可转动,所以我们将一条接到固定高电平上,例如5V引脚,另一个接到我们的PWM控制的引脚即可。输入捕获可以用来捕获外部事件,比如引脚的电平变化(上升沿,下降沿),并记录下变化的时间,通常可以用来测量外部信号的频率或者电平持续的时间。总结起来,PWM 通过改变信号的高电平和低电平的时间比例来控制输出的平均电压或功率,是一种常用的调节信号的方法。:通过调整PWM的占空比,可以控制直流电机的速度和方向,以及交流电机的频率和电压,实现精密的速度和扭矩控制。

2024-07-20 15:06:46 5122 2

原创 Linux限速工具:FlowMaster - IP级网络流量控制脚本

在市面上看了好多关于网络限制的脚本,最终也没发现一个关于IP限制的脚本。遂决定自己做一个(当然也是公司要求~)。目前功能基本完成。限制速度可能还有待优化。也希望各路网友可以指点,能加入进来修改那就太好了。初衷只是为了给大家带来便利。如果帮到你了,那请点个小星星吧。FlowMaster 是一款功能强大且灵活的流量控制脚本,专为 Linux 系统设计。它使您能够通过在指定的网络接口上应用上传和下载速度限制来有效管理带宽和网络资源。

2024-07-13 15:15:23 1730

原创 STM32中的DMA:解锁高效数据传输的秘密武器(内附实例)

传统的数据传输方法往往需要CPU的频繁干预,这不仅消耗了CPU的宝贵资源,而且限制了系统的整体性能。

2024-07-08 15:27:12 1271

原创 嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)

通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。

2024-07-06 14:52:20 3018

原创 掌握Linux网络:深入理解TC —— 你的流量控制利器

TC,即 Traffic Control,是 Linux 内核提供的一种用于网络流量管理和质量服务(Quality of Service, QoS)的工具。SHAPING(限制)当流量被限制时,其传输速率被控制在预设的阈值之下。这种限制可以显著减少突发流量,有助于维持网络的稳定性和预测性。SHAPING 主要应用于向外的流量控制。SCHEDULING(调度)调度涉及在可用带宽范围内,按优先级分配带宽资源。这确保了关键应用和服务可以得到优先处理,从而提高了网络的整体效率。

2024-07-05 15:47:23 1881

tc限制ip下载和上传速率脚本

tc限制ip下载和上传速率脚本

2024-05-16

基于QT实现的QQ聊天简易版(UDP通信版)

基于QT实现的QQ聊天简易版(UDP通信版)

2023-12-20

STM32F103C8T6实现简易密码锁(CubeMax配置)(一),Oled显示

STM32F103C8T6实现简易密码锁(CubeMax配置)(一),Oled显示

2023-11-22

基于QT实现的词典(附源码)

词典源码

2023-11-07

stm32单片机温湿度传感器(SPI的LCD、HAL库、GPIO、UART的接收中断、ADC、串口通信)

基础代码

2023-08-29

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

TA关注的人

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