自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UDC否定响应码学习

在UDS(Unified Diagnostic Services,统一诊断服务)协议中,当诊断仪向ECU发送请求后,ECU可能返回否定响应,表示无法执行请求。否定响应有固定的报文格式。

2025-08-27 10:40:24 260

原创 深入浅出UDS:现代汽车诊断的核心协议

UDS作为汽车诊断领域的“通用语言”,其结构化的6大类26种服务共同构成了一个功能强大、灵活且安全的体系。随着汽车电子化、智能化程度不断提高,UDS的重要性愈发凸显。理解UDS协议,对于从事汽车研发、测试、售后维修以及相关技术爱好者而言,已成为一项不可或缺的核心技能。欢迎在评论区留言讨论!

2025-08-26 15:38:34 373

原创 深入浅出理解动态链接库(DLL)

动态链接库的英文全称是,在 Windows 世界裡,它的文件扩展名通常是.dll。你可以把它想象成一个公共代码仓库。函数:比如计算、加密、文件操作等功能的代码块。类:面向对象编程中的类定义。资源:如图标、图片、字符串、对话框模板等。驱动程序:与硬件通信的代码。它的核心思想是“共享”和“动态”。多个应用程序可以共享使用同一个DLL文件,而“链接”这个操作发生在程序运行时(动态),而非编译时。动态链接库是现代操作系统的基石之一,它通过共享和运行时链接。

2025-08-26 14:49:04 389

原创 编译与链接学习

阶段 | 输入 | 输出 | 核心任务 | 常见命令 (GCC) |编译main.c(源代码) |main.o(目标文件) | 翻译单个文件,生成机器码,但存在未解决的引用 |链接main.omath.olibsa.out(可执行文件) | 合并所有模块,解析符号分配最终地址但背后依然是先逐个编译,再统一链接的过程。编译错误:通常是语法错误,比如漏了分号、拼错关键字。发生在gcc -c阶段。链接错误:通常是,意味着找不到函数或变量的定义。发生在链接阶段。

2025-08-26 14:00:53 925

原创 正则表达式学习(基础)

这张图几乎涵盖了正则表达式最核心、最常用的语法。学习顺序:先理解元字符(是什么),再掌握限定符(有多少),然后用或运算符和字符类构建更复杂的关系,最后在需要精确控制时使用懒惰匹配。如何练习一定要动手!打开或regexr.com,把例子输进去,自己修改、测试,观察结果。这是最快的学习方法。常见用途验证字符串^\d{11}$(11位数字)提取信息(从日志中提取年月日)替换文本:将\bMr\b替换为Mr.(确保Mr后面有点)别怕:它看起来像乱码,但其实逻辑清晰。分解。

2025-08-25 18:01:56 1169

原创 蓝牙部分解析和代码建构

QT6.9版本,msvc2022编译器。BLE低功耗蓝牙通信扫描、连接、通信功能。

2025-08-22 15:09:06 587

原创 QT中的trimmed() 方法(1)

是 Qt 框架 中 类提供的一个方法,用于 去除字符串首尾的空白字符(whitespace characters)。它的作用类似于标准 C++ 中的 的 操作,但专为 Qt 的字符串设计。移除字符串开头和结尾的所有空白字符,包括:空格 ()制表符 ()换行符 (、)其他 Unicode 空白字符(如全角空格)不会修改字符串内部的空白字符。返回一个新的 ,是原字符串去除首尾空白后的副本。原字符串不会被修改(因为 是隐式共享的)。3. 示例4. 对比其他相似方法方法作用是

2025-08-08 13:55:33 228

原创 用 Enigma Virtual Box 把 Qt 程序压成单文件 EXE——从编译、收集依赖到一键封包

关键词:Qt、windeployqt、Enigma Virtual Box、单文件、绿色软件。

2025-08-07 15:15:42 484

原创 C++中的默认函数学习

在函数声明时,给某些参数预先设定一个默认值。调用函数时,如果省略这些参数,编译器会自动使用默认值。

2025-08-06 11:22:30 254

原创 学习的智能硬件QT教程笔记——(4)信号与槽学习

右键点击转到槽,在里面选择合适的信号,这里选择点击,即点击控件执行函数,(所执行的函数需要写在下图中的函数体中)。此时代码中会自动在设置的.ui文件对应的.cpp和.h文件中添加相应的槽函数。connect();// 连接信号与槽 (谁发出信号 发出什么信号(宏) 谁处理信号 怎么处理信号)链接:https://pan.quark.cn/s/e69d78830a0d?启动新进程,需在.h头文件中包含相应的类( #include )打开「夸克APP」即可获取。

2025-08-04 14:34:19 247

原创 为什么要烧录固件?——从生产到运维的全流程解析

烧录固件(Firmware)是嵌入式系统和电子设备开发、生产、维护中的关键步骤,其核心目的是。STM32单片机的固件决定了它是控制电机,还是处理CAN总线数据。

2025-07-30 11:26:18 552

原创 Bootloader简介(自学)

Bootloader(引导加载程序)在汽车电子系统中扮演着**“唤醒大脑” + “软件快递员”**的角色。

2025-07-29 19:42:48 441

原创 C++ 结构体struct学习

元素描述关键作用是否必须?成员变量结构体存储的数据项描述对象的状态核心,通常有成员函数操作成员变量的函数封装操作、实现对象行为常见,推荐使用构造函数特殊函数,对象创建时自动调用初始化对象状态强烈推荐有(至少默认)析构函数特殊函数,对象销毁时自动调用清理资源(内存、文件等)需要管理资源时必须访问说明符publicprivateprotected控制访问权限,实现封装良好设计推荐使用静态成员static变量/函数,属于结构体本身而非实例共享数据、提供类级别工具函数按需使用嵌套类型。

2025-07-22 15:36:46 641

原创 学习的智能硬件QT教程笔记(3)——QT的开发工具 QT Creater

创建项目见视频,基本都是点下一步,其中注意要创建ui。

2025-07-22 15:25:37 919

原创 (qt代码解释1)代码解释:private: Ui::Widget *ui

的私有指针,用于在代码中操作你在设计器里拖出来的控件。,它包含了你在设计器里添加的所有控件的指针(例如。在这个头文件里,定义了一个命名空间。创建一个界面文件(如。

2025-07-22 14:07:08 176

原创 学习的智能硬件QT教程笔记(2)——QT的编译

​ 在智能硬件开发中,QT作为一款强大的跨平台C++图形用户界面应用程序框架,其重要性不言而喻。

2025-07-22 11:26:02 695

原创 Keil运行报错 :L6123E

问题。解决方法是,删除.c或.cpp中include的.c文件。总结就是遇到的问题是典型的。

2025-07-21 18:02:40 470

原创 # 条件编译`#ifdef`、`#ifndef`等补充

/ 编译时定义宏:g++ -DUSE_OPTIMIZED_VERSION=1 main.cpp// 优化版本#else// 基础版本#endif。

2025-07-21 10:22:27 411

原创 C++ 中的 `#ifndef` 和 `#endif` 详解 (c++学习 )

C++ 中的 和 详解在 C++ 中, 和 是预处理指令,用于条件编译。它们共同构成了 C/C++ 程序中防止重复包含头文件的核心机制。工作原理首次包含头文件:后续包含头文件:避免重复定义错误:提高编译效率:防止循环包含:宏命名的通用规范命名格式:(全大写)示例: → → → 其他常见用法1. 功能开关编译时可通过 禁用日志功能3. 调试模式控制与 的比较特性/标准支持C/C++ 标准编译器扩展可靠性10

2025-07-19 17:59:55 325

原创 c++结构体语法

在 C++ 中,结构体(struct)是一种用户自定义的数据类型,用于将不同类型的数据组合成一个单一的类型。

2025-07-19 15:13:36 656

原创 Keil 中代码缩进规则总结.md

Keil μVision IDE中代码缩进主要依赖手动控制,建议采用4空格缩进(而非Tab)以保持一致性。遵循层级缩进原则,函数体、条件语句、循环等代码块需增加一级缩进。推荐使用K&R大括号风格({不换行)。通过Edit→Configuration设置Tab为4空格并勾选"Insert spaces for tabs"。避免混用空格和Tab,复杂表达式可手动对齐。全项目应保持统一缩进风格,必要时可用Astyle等工具辅助格式化。

2025-07-19 14:58:55 395

原创 &在C++中的语法格式

C++中&符号有三种主要用法,各有严格语法规范:1) 取地址运算符&var(无空格);2) 引用声明Type& ref(类型后无空格);3) 位与运算a & b(前后加空格)。Keil等嵌入式环境特别强调区分引用声明和位与运算的格式差异,避免混淆。最佳实践要求取地址和引用声明时&紧贴标识符,位与运算保留空格,项目内保持风格统一,必要时用括号明确优先级。错误格式如& var或Type & ref会导致代码规范问题。

2025-07-19 14:34:12 514

原创 高效地学习和掌握 Qt Creator

放在可执行文件同级目录,或通过。:分析头文件包含关系,避免冗余。

2025-07-17 20:28:46 636

原创 C++ 中,运算符 .、::、: 和 -> 的区别

C++中主要运算符的区别:.用于对象实例访问成员(如obj.member);::用于作用域解析,访问命名空间或类成员(如Class::staticVar);:用于初始化列表、继承和标签等语法;->用于指针访问成员(如ptr->member)。关键区别在于:.操作对象实例,::操作作用域,:是语法标记,->操作对象指针。ptr->member等价于(*ptr).member,而静态成员需用::访问。

2025-07-17 20:21:09 312

原创 (一)QCustomPlot 控件---QT Creater控件学习(自学)

中正确声明 QCustomPlot 的头文件。是 Qt 框架中一个功能强大的。

2025-07-17 19:47:58 1103

原创 面向过程和面向对象编程(自学)

摘要: 面向过程(POP)和面向对象(OOP)是两种编程范式。POP关注“步骤”,将任务分解为线性执行的函数(如菜谱步骤),适合简单逻辑。OOP关注“对象协作”,将数据和操作封装为独立对象(如厨师、锅具等),通过交互完成任务,支持封装、继承、多态,更适合复杂系统。关键区别在于:POP强调“怎么做”(函数流程),OOP强调“谁来做”(对象职责)。POP直接高效但难维护,OOP结构清晰但稍复杂。现代开发以OOP为主,但POP仍用于脚本或性能敏感场景。理解两者差异对编程思维至关重要。

2025-07-17 19:45:16 812

原创 快速理解和学习现有Qt Creator 项目

快速理解和学习现有Qt Creator 项目

2025-07-17 19:40:44 654

原创 Qt Creator 中开发一个软件的完整流程和文件层级结构

本文介绍了在Qt Creator中开发软件的基本流程和文件结构。开发步骤包括:创建项目(选择模板、设置路径和模块)、设计界面(拖拽控件、修改属性)、编写代码(声明变量、实现功能)、编译运行和调试。项目文件结构主要包含Headers、Sources、Forms、Resources文件夹和.pro配置文件。文章还详细说明了关键文件的作用,如.pro项目配置、main.cpp程序入口和UI文件关联方式,并提供了新手常见问题的解决方案(如控件查找、程序崩溃处理等)和学习建议(从基础功能入手、查阅文档)。

2025-07-17 19:38:40 1295

原创 嵌软——操作系统

在嵌入式系统领域的面试中,关于操作系统的问题通常涉及操作系统的理论知识、实际应用以及与特定硬件平台的集成。

2024-09-28 11:30:42 1054

原创 git常用指令

Git是一个分布式版本控制系统,它帮助开发者跟踪和管理代码变更。这些命令覆盖了Git版本控制的大多数常见操作。掌握这些命令对于日常的版本控制工作非常有帮助。

2024-09-28 11:22:01 391

原创 嵌入式面试———C常见问题

数组是在创建时大小就固定的数据结构。例如,定义一个整数数组:c定义和使用在C语言中,数组是一种基本的数据结构,用于存储固定大小的相同类型的元素序列。数组的声明包括指定元素的类型和数组的长度。特点固定大小:数组的大小在声明时确定,并且不能改变。零索引:数组的索引从0开始。连续内存:数组元素在内存中是连续存储的。相同类型:数组中的所有元素必须是相同的数据类型。可以是多维的:可以定义多维数组。malloc()malloc()联合体(union):不同的数据共享同一块内存空间。结构体(

2024-09-28 11:21:18 1512

原创 嵌入式面试——常见排序

冒泡排序是一种简单的排序算法,它重复地遍历待排序的列表,比较每对相邻元素,如果它们的顺序错误就把它们交换过来。遍历列表的工作是重复进行的,直到没有再需要交换的元素为止,这意味着列表已经排序完成。选择排序是一种简单直观的排序算法。它的工作原理是每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。快速排序是一种分而治之的排序算法,它通过一个轴点将数据分为两部分,对左右两部分递归进行快速排序。在实际应用中,选择哪种排序算法取决于数据的特性和算法的性能要求。

2024-09-28 11:19:54 662

原创 嵌入式面试--C/C++

面试救急

2024-09-28 11:09:57 1021

原创 嵌入式面试——操作系统(gpt版本)

在嵌入式系统领域的面试中,关于操作系统的问题通常涉及操作系统的理论知识、实际应用以及与特定硬件平台的集成。

2024-09-17 14:14:51 1509

原创 嵌入式系统的面试——低功耗设计

此外,我会使用状态机和事件驱动逻辑来优化时钟门控的实现,并在设计完成后进行彻底的测试和验证,以确保时钟门控不会影响系统的性能和可靠性。回答: 为了减少无线通信中的功耗,我会采取多种策略,包括降低数据传输速率、使用省电模式、优化数据包结构、数据压缩、调度传输、使用高效的调制编码方案、动态功率控制以及设计合理的睡眠和唤醒策略。回答: 时钟门控是一种在微控制器中广泛使用的低功耗技术,它通过物理上阻断不需要的时钟信号来禁用特定模块的工作,从而减少这些模块的功耗。此外,它还可以降低模块的漏电流,进一步提高能效。

2024-09-17 14:13:52 2796

原创 嵌入式面试———进程与线程

嵌入式面试题---进程与线程(自学版)

2024-09-16 22:23:31 551 1

原创 嵌入式面试--通信协议问题回答

嵌入式面试提问问题总结--通信协议

2024-09-16 22:02:04 1418 1

空空如也

空空如也

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

TA关注的人

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