- 博客(482)
- 资源 (16)
- 收藏
- 关注
原创 无法回避的字节对齐问题,从八个方向深入探讨(变量对齐,栈对齐,DMA对齐,结构体成对齐
回答:没有__packed的会出现字对齐等也就是,char型的有可能是占用4个字节的长度的内存空间有__packed 的就不会,就肯定是1个字节的内存空间,是gcc编译器的关键字。(不止vc下面32位的系统里面的内存数据的存取是32位的,处理的时候都是4个字节为单位,通常也就是int的长度。4.若自定义的malloc函数本身没有对分配的内存实现4字节或以上的对齐操作,分配出来的不对齐的内存,编译器是不知道的,所以很可能会产生问题。字节对齐的含义:4字节对齐的含义就是变量地址对4求余数为0;
2025-05-07 09:38:42
685
原创 深入理解Qt状态机的应用
有限状态机(finite-state machine)又称有限状态自动机(finite-state automaton),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。这个概念在计算机科学、数学、语言学、工程以及其他研究领域都有广泛的应用。有限状态机非常适合用于描述那些通过一系列的输入来转移状态的系统。
2025-04-17 12:02:12
934
原创 VS Code常见的查找快捷键大全
在查找并替换面板中,你可以输入要查找的文本和替换的文本,VS Code 会在当前文件中查找并替换所有匹配项。在打开的文件中,你可以使用快捷键 Ctrl+F(Windows/Linux)或 Cmd+F(macOS)来查找文件中的文本。VS Code 提供了多种方法来查找和导航文件,包括快速打开文件、文件资源管理器、全局搜索、查找符号、查找文件中的文本、查找并替换、文件导航和使用命令面板。你可以使用快捷键 Ctrl+T(Windows/Linux)或 Cmd+T(macOS)来查找符号(如函数、变量、类等)。
2025-04-13 17:22:12
1600
原创 Qt触摸屏隐藏鼠标指针
1.如果只希望在某个 widget 中不显示鼠标指针,那么在该 widget 的构造函数中调用。还可以用setCursor函数来设置鼠标指针的不同样式。3.可以在任一控件或者页面下显示或者隐藏鼠标指针。QT鼠标图标显示与隐藏。
2025-04-12 20:50:09
488
原创 openssl交叉编译
no-async: 交叉编译工具链没有提供GNU C的ucontext库。no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程;–cross-compile-prefix=: 交叉编译工具。shared: 生成动态连接库。–prefix=: 安装路径。执行下面的命令配置工程。
2025-04-06 10:03:35
547
原创 【VS Code 插件】SQLite 可视化插件
(3) 在搜索结果中选择 SQLite:打开数据库(open database)。将选择你的数据库文件:*.db。项目经常用到SQLite这个轻量型数据库,于是乎,就想着找一个可视化工具,但是我有时候只是想方便预览数据。用习惯VS Code的小伙伴们都知道,插件的帮助之下,开发效率更高。我的表名称为events,全查询如下,sql的语句知识捡一下。但这时候,你会发现,啥变化都没有,别急,继续。表,又不想安装额外的程序,那么这款插件很适合你。输入查询语句后,右键Run Query执行查询。
2025-03-09 20:45:18
1948
原创 qt 操作多个sqlite文件
以下是一个简单的示例,展示如何在Qt中操作多个SQLite数据库文件。在Qt中使用多线程操作多个SQLite数据库文件时,需要注意SQLite的线程安全性以及Qt的多线程机制。SQLite默认支持多线程操作,但需要确保每个线程使用独立的数据库连接,以避免竞争条件。如果文件不存在,SQLite会自动创建它。使用QSqlDatabase::addDatabase创建独立的数据库连接,并通过moveToThread将工作者对象移动到独立的线程中。程序会创建多个线程,每个线程操作一个独立的SQLite数据库文件。
2025-03-08 20:21:15
1394
原创 QT-自定义参数设计框架软件
常用本地数据参数通常使用的是xml等文本的格式,进行本地的数据参数的存储。这种参数的保存方式有个致命的一点,就是可以存在参数的丢失。特别是在软件异常退出的情况下发生。针对此等情况,我们现在使用的是sqllite的本地存储方式进行设计,并且尽量将参数的格式通用化。
2025-03-04 21:17:31
889
原创 Qt互斥锁(QMutex)的使用、QMutexLocker的使用
QMutexLocker提供的简化互斥锁锁定和解锁的机制在很多时候时蛮方便的,在使用互斥锁的地方使用QMutexLocker会减去许多安全隐患;不过在多线程循环输出ABC的时候好像就不适合该方法。所以使用类似的类还得按情况而定。
2025-02-27 22:12:20
2368
原创 温湿度传感器SHT40(第四代)&SHT20(第二代)
然而,SHT20仍因其成熟的性能和相对的成本优势,在很多应用中仍有广泛的使用。•SHT40:相比SHT20,SHT40在精度和稳定性上有进一步提升,温度精度可达±0.2°C(典型值),湿度精度可达±1.8%RH(典型值),并且具有更好的长期稳定性。•SHT40:相对于SHT20,增加了更多的内部自校准功能,能够更好地补偿传感器老化和温度漂移,从而在整个产品生命周期内保持高精度。•SHT20:具有高精度的温湿度测量能力,温度精度±0.3°C(典型值),湿度精度±2%RH(典型值),并且具有良好的长期稳定性。
2025-02-26 20:43:17
1920
原创 Qt延时处理的四种方法
这种方法不会阻塞当前线程,尤其适合Qt的单线程带UI程序,或者UI线程,因为线程阻塞时,很明显的现象就是UI卡死。它可以使得程序在while等待期间,去处理一下本线程的事件循环,处理事件循环最多100ms必须返回本语句,如果提前处理完毕,则立即返回这条语句。1、 多线程程序使用QThread::sleep()或者QThread::msleep()或QThread::usleep()或QThread::wait()进行延时处理。4、 创建子事件循环,在子事件循环中,父事件循环仍然是可以执行的。
2025-02-26 20:35:28
891
原创 SOLIDWORKS无法卸载解决方法 - 强制卸载程序
如果安装有低版本的SolidWorks,请先卸载,重点是移除之前低版本的SolidWorks_Flexnet_Server,也即以管理员权限运行之前版本的SolidWorks_Flexnet_Server\server_remove.bat 这个文件,先将license服务移除。因为license是通过注册表文件预先导入的,安装时如果联网,安装程序会去验证license是否有效,结果当然是无效的license,所以在安装时不能联网,采用离线安装,您可以拔掉您的网线也可以通过禁用网络适配器的方式禁止联网。
2025-02-20 19:09:17
2529
2
原创 VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
把软件也分用户和系统管理员,对于普通用户而言,为了避免不必要的麻烦,建议使用System版,仅供参考。对于User版安装程序以及VScode程序默认均为英文,貌似不能读取系统语言环境,System版直接是中文安装程序,以及中文显示面板。User版本无法在系统分区(盘) 创建默认文件夹Microsoft VS Code,可见权限不足。Visual Studio Code官网却提供了User和System两个版本。对于System版无此问题,可next step到底,和其他不分的软件一样了。
2025-02-16 19:48:14
1789
原创 TortoiseGit间接处理linux目录下的仓库,用到window映射linux目录方案
这次尝试了3种映射linux目录到window的方案,都可以完成映射,基本的增删改查文件都没问题。但是只有WinFsp这个工具完美运行TortoiseGit,搞定收工。
2025-02-02 22:17:47
597
原创 无需命令行,用 VSCode 轻松提交 Git 代码
Git 作为版本控制工具,通过在开发过程中记录代码的变化,简化了开发者之间的代码协作。而对于许多开发者而言,命令行提交 Git 代码却是一项让人感到困难的任务。然而,现在你可以轻松地通过 VSCode 提交 Git 代码,让你的代码管理变得更加轻松和高效。在本文中,我们将介绍如何使用 VSCode 来实现简单的 Git 提交, 帮助你更加流畅地完成软件开发。git stash 命令用于临时保存当前工作目录的修改,并将工作目录恢复到上一次提交的状态。
2025-02-01 17:27:15
3143
原创 Ubuntu下的Doxygen+VScode实现C/C++接口文档自动生成
Doxygen 是一个由 C++ 编写的、开源的、跨平台的文档生成系统。最初主要用于生成 C++ 库的 API 文档,但目前又添加了对 C、C#、Java、Python、Fortran、PHP 等语言的支持。其从源代码中提取注释,并生成多种输出格式,如HTML、PDF、LaTeX、RTF等,以帮助开发者创建易于阅读和理解的代码文档。Doxygen 简化了另行编写文档带来的重复性劳动,将代码和文档的工作合二为一。经过 10 年的迭代,Doxygen 成为了 C/C++ 项目首选的文档生成工具。
2025-01-31 18:14:31
1006
原创 使用Doxygen实现代码自文档化
Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档,后者API参考手册要遵守一定的注释规范,才能被Doxygen识别和转化在每个代码项中都可以有两类描述:brief描述 和 detailed描述;两种任选其一若需要通过Doxygen生成漂亮的文档,一般有如下几个地方需要使用Doxygen支持的风格进行注释头文件(.h 和 .hpp):主要用于声明版权,描述本文件实现的功能,以及文件版本信息等。
2025-01-31 11:34:12
1061
原创 RK3506典型应用场景分析
RK3506核心板平台支持AMP多核异构多系统,支持Linux、 RTOS、 Bare-metal组合的AMP系统架构,可实现2xCortex-A7 Linux + 1xCortex-A7 RTOS+ Cortex-M0 HAL或3xCortex-A7 RTOS + Cortex-M0 HAL的应用结构。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。RK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开机。
2025-01-20 21:49:14
784
原创 linux下实现U盘和sd卡的自动挂载
2、在/etc下的mdev.conf文件中加入(如果没有这个文件,则新建一个)3、在/etc下建立hotplug文件夹,并在该文件夹下建立两个文件。1、在/etc/init.d/rcS中加入以下语句。
2025-01-11 22:39:16
997
原创 嵌入式linux 内核启动时动态加载驱动模块的方法
手头有个项目底层基本结束,所有的驱动都已经写好,并且调试通过了,但是考虑到每次使用时都手动加载驱动,岂不是很“蠢”,能自动的事怎么能手动呢?于是开始折腾“linux开机自动加载驱动”,百度,谷歌了半天,怎么感觉说的都不清楚:为毛他们说的文件、文件夹我都没有?难道我用的是假的文件系统,假的内核?唯一靠谱的就是:在 /etc/rcx.d 文件夹下添加shell脚本,再让脚本去 insmod或modeprob 自己的驱动。
2025-01-10 20:03:46
816
原创 千兆宽带和全屋WiFi覆盖
路由器能覆盖的面积,根据房子的格局不同而不同。市面上的路由器信号都差不多(那些看上去很牛逼,很多天线的路由器,信号也好不到哪里去!),一个路由器想要覆盖整个房子,很难!于是乎,我有了做全屋wifi的想法。
2025-01-06 14:43:28
1950
原创 C++深拷贝和浅拷贝的区别
在 C++ 中,浅拷贝和深拷贝是处理对象复制时非常关键的概念,尤其是当对象内部有指针成员指向动态分配的内存时。对于指针成员,浅拷贝只复制指针的值(即内存地址),而不复制指针所指向的数据。这意味着原对象和拷贝对象的指针成员将指向同一块内存地址。选择浅拷贝还是深拷贝取决于具体情况,但在涉及到动态内存管理的场景下,深拷贝通常是必要的,以确保数据的独立性和程序的稳定性。这样,原对象和拷贝对象的指针成员就分别指向不同的内存地址,互不干扰。当一个对象被浅拷贝时,所有的成员变量都会直接复制其值,包括指针类型的成员变量。
2024-12-27 17:55:45
804
原创 细谈 C++ 返回传值的三种方式:按值返回、按常量引用返回以及按引用返回
C++ 的代码很难看懂,也许就在这些方面,一方面入参的四种方式,一方面出值的三种方式。相互组合,就会让人觉得晦涩难懂。其实好好深入到里面弄清楚其里面的含义,也就比较好理解了。这篇和上一篇写传参四种方式的博客写的非常认真,也希望能够对 C++ 初学者能有一些帮助。
2024-12-26 19:42:49
1176
原创 rk3588(七):GPIO简介及使用
原文链接:https://blog.csdn.net/qq_32636415/article/details/134918848在 RK3588 中,有只支持 1.8V,和支持 1.8V/3.3V 两种电压可配置,共两种类型的 GPIO。Core-3588J 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0~A7, B0~B7, C0~C7, D0~D7 作为编号区分,常用以下公式计算引脚:GPIO pin脚计算公式:pin = bank * 32 + numberGPIO 小组编号计
2024-12-02 14:19:11
2345
原创 Ubuntu20.04下安装VSCode(配置C/C++开发环境)和设备树插件用于嵌入式开发
vscode-icons , VSCode 图标插件,主要是资源管理器下各个文件夹的图标。用这个命令安装deb文件:sudo dpkg -i <package-name.deb>进入VSCode官网Visual Studio Code,下载deb版本。在左侧扩展商店中查找 ”chinese“选第一个安装,安装好后重启软件。在左侧扩展商店中查找 ”DeviceTree“安装,,设备树语法插件。在左侧扩展商店中查找 ”C/C++“选第一个安装。在左侧扩展商店中查找 ”Json“选第一个安装。
2024-11-28 17:52:12
914
原创 【迅为电子】RK3568驱动指南|第十七篇 串口-第199章 串口子系统框架
在串口通信协议和串口通信接口类型的基础上,串口子系统框架为串口设备的驱动和管理提供了完整的架构。rx”,“tx”打开tx dma、“rx”打开rx dma、“!pinctrl-names 和 pinctrl-0:用于串口设备的管脚控制,以配置和管理串口设备的引脚设置。串口子系统框架的层级设计将串口设备的功能分解为不同的层次,实现了功能的模块化和抽象化,方便开发者进行串口设备的驱动开发和维护。reg:指定串口设备的地址和大小,0xfe6d0000 是串口设备的基地址,0x100 表示地址空间的大小。
2024-11-27 21:15:48
824
原创 瑞芯微RK3568驱动配置之十串口
瑞芯微RK3568驱动配置之十串口Chaptet1 瑞芯微RK3568驱动配置之十串口Chapter2 创龙瑞芯微RK3568设备树1(修改设备树GPIO和串口)前言基础题外话内容1.GPIO2.串口不同总结后续Chapter3 QT串口大量数据动态实时显示(三)========“customplot绘图步骤”前言第一部分: 串口接收大量数据动态显示的难点串口大量数据QT接收时问题的原因:选择customplot绘图的原因:Chapter4 创龙瑞芯微RK3568参数修改(调试口波特率和rootfs
2024-11-27 20:55:03
1794
原创 Linux驱动开发(速记版)--设备树插件
*Linux 4.4之后引入了动态设备树,其中的设备树插件(Device Tree Overlay)是一种扩展机制,允许在运行时动态添加、修改或删除设备节点和属性。**设备树插件机制通过DTS(设备树源文件)定义,提供了一种灵活配置硬件设备的方式,无需重新编译整个设备树,也无需重启系统即可进行硬件配置更改。在 linux 源码中 linux_sdk/kernel/Documentation/filesystems/configfs 目录下的 configfs.txt。是设备树插件的帮助文档。
2024-11-22 22:32:01
1217
原创 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题
设置缩放比例,调节所有字体缩放的倍数,如我设置1.5倍大小,自己根据自己的电脑分辨率定。屏幕分辨率太高了,导致整个系统字体看起来过小。安装完成后,在终端输入下面命令,弹出优化窗口。安装gnome-tweaks桌面配置工具。输入数字完成后,按下enter回车键即可。
2024-11-18 19:52:23
1241
原创 Qt 通用pro配置
如果指定 TEMPLATE为 lib模板,且未指定 CONFIG为静态库或者动态库,则默认生成动态库。提供一个通用的Qt pro工程配置。
2024-11-16 16:21:04
517
原创 VMware 17虚拟Ubuntu 22.04设置共享目录
lang=zh_cn。笔者按官方文档https://docs.vmware.com/en/VMware-Workstation-Pro/17/com.vmware.ws.using.doc/GUID-AB5C80FE-9B8A-4899-8186-3DB8201B1758.html,以及vmhgfs-fuse -h示例,使用vmhgfs-fuse .host:/ /mnt/hgfs来挂载共享目录,可是还是无法显示出来。是的我认为是我的,共享文件挂载问题,很多文章的挂载过程比较简单,甚至挂载过后依然无效。
2024-11-15 11:17:57
1657
1
原创 linux下RX8010SJ实时时钟芯片(RTC)的读写
由于项目的需要在ARM嵌入式板子上挂上了一颗EPSON的RX8010实时时钟芯片,为数据采集提供可靠的时间。RX8010内置了具有温补的晶振,可以简化设计,而且也不贵,所以就选择了它。其中rx8010为RX8010驱动注册的名称,不能为其它字符,而0x32则为该芯片在I2C总线上的通信地址。上面的命令将合成的字符串写入new_device,然后内核就会查找到加载的RX8010驱动,将地址传入,再由驱动程序与实际芯片进行通信,如果通信正常则完成设备的注册,生成设备文件/dev/rtc1。
2024-11-14 10:24:50
1294
原创 【全志T113】RTC时钟芯片PCF8563移植驱动流程记录
硬件部门交付的主板上外挂了一颗RTC时钟芯片PCF8563,我需要实现pcf8563的驱动、外部rtc同步到系统、开机自动同步时间等工作。这类时钟芯片大多数是通过i2c通讯和soc进行连接,而且linux内核自带了pcf8563的驱动,如果顺利的话,开发起来是非常顺利的。但是由于不熟悉流程,所以踩了很多坑,写下来作为记录供后人参考。
2024-11-14 09:16:25
2134
原创 Qt生成随机数详细指南(更现代化的QRandomGenerator类)
Qt提供了强大的随机数生成功能,主要通过QRandomGenerator和QRandomGenerator64类来实现。这些类不仅提供了生成整数和浮点数随机数的方法,还支持生成指定范围内的随机数。虽然旧的qrand()函数仍然可以使用,但高版本已经弃用,不再推荐。
2024-11-11 14:09:36
2166
原创 QJson-趟过的各种坑(先坑后用法)
rapidjson是腾讯的开源json解析框架,用c++实现。由于全部代码仅用header file实现,所以很容易集成到项目中。rapidjson的性能也非常出色。
2024-11-09 17:29:33
664
原创 Ubuntu中以root身份运行Qt创建的项目
使用Qt开发项目时遇到了一个问题,项目要调用串口时会需要root权限,而当我们使用桌面启动Qt creator使用的是用户身份,在debug或run项目时会出现权限不够的状况。可以在终端直接找到项目的bin文件以sudo权限运行,但是太过繁琐,不能每次都这样去调试。
2024-11-09 16:00:33
889
原创 【Qt问题】解决 Cannot retrieve debugging output
本文介绍了在Qt开发过程中遇到的’Cannot retrieve debugging output’问题及其解决方法。该问题可能由于同时运行了两个Qt软件导致,解决方案包括关闭其中一个Qt实例或确保项目在单个Qt环境中打开。这时需要打开一个选项:工具->选项->构建和运行->default for “Run in terminal”:由disabled改为enabled。
2024-11-07 17:02:59
939
FreeRTOSv202112.00.zip
2022-01-04
cJSON(STM32CubeMX5.3.0).rar
2021-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人