- 博客(43)
- 收藏
- 关注
原创 聊聊GPIO 工作模式
嵌入式开发中,GPIO(General-Purpose Input/Output)是最基础也最常用的功能模块之一。你可以把它想象成微控制器伸出来的无数根“手脚”:既可以用它**输出**信号去点亮LED、驱动外设,也可以用它**输入**信号来检测按键、读取传感器状态。
2025-06-19 23:04:09
438
原创 STM32串口通信:USART状态寄存器(SR)
**USART状态寄存器(SR)就是串口的“状态看门狗”** —— 实时反馈关键事件(收到/发完/错误),精准操作标志位 + 及时清错误 = 稳如老狗的串口通信!
2025-06-17 08:45:00
507
原创 中断:让你的CPU学会“多线程”干活
在程序执行当中,出现了某些特定事件,从而导致CPU需要暂停当前程序去处理中断事件,完事再回过头继续从中断点执行当前程序,这就是中断。
2025-06-16 08:45:00
602
原创 MFC消息映射核心宏极简指南
在MFC开发中,消息映射机制是连接用户操作与程序逻辑的核心桥梁。通过简洁的宏声明,开发者可以高效处理各种Windows消息。
2025-06-12 09:00:00
537
原创 深入浅出理解时钟树
时钟树就是给 STM32 芯片内部的各个功能模块计时的,能让这些模块知道该按什么速度工作,并且还能灵活调整速度,保所有模块的运作是精准同步的。
2025-06-10 09:00:00
963
原创 一文了解GPIO
GPIO,是微控制器(单片机)芯片上一类 **“万能”的物理引脚**。这些引脚没有预先限定功能(不像专门的串口、USB接口),可以由开发者**通过软件自由配置**其工作方式。
2025-06-09 09:00:00
368
原创 MFC 菜单状态更新核心操作及实用对照
在 MFC 开发中,根据程序状态动态更新菜单项的状态是实现良好用户体验的重要环节。以下将为您详细介绍 MFC 菜单状态更新的核心操作及相关要点。
2025-06-06 09:00:00
455
原创 位运算实用指南:高效操作二进制位
位运算直接操作内存中的二进制位,常用于底层开发、性能优化和算法设计。本文通过代码示例讲解核心技巧,带你快速掌握位运算的实用操作。
2025-06-05 09:00:00
862
原创 C++数据类型:为何五花八门?
在C++开发中,你是否曾困惑过这些数据类型的选择:`int`还是`int32_t`?`unsigned long`还是`DWORD`?为什么C++需要这么多不同的数据类型表示法?今天我们就来解开这个谜团。
2025-06-03 09:00:00
328
原创 8位单通道数据保存为JPG
如何将单通道8位灰度数据(0黑~255白)直接保存为JPG文件?这里提供两种最实用方案:轻量级STB库(推荐)和OpenCV方案(已有环境适用)
2025-05-30 20:49:24
769
原创 STM32:单片机界的 “香饽饽”
它是意法半导体出品的 32 位 ARM Cortex-M 内核单片机,相比 51 单片机,性能大幅提升,堪称单片机界性价比超高的 “性能小钢炮”。
2025-05-29 22:45:27
298
原创 C++ 开发必知的图像位数核心知识
图像位数决定了颜色或灰度的精细程度。位数越高,数据越精细,但内存和计算成本也会增加。在 C++ 开发中,理解图像位数的核心差异对于高效处理图像数据至关重要。
2025-05-28 09:45:00
517
原创 选择排序:轻松理解与实现
选择排序(Selection Sort)就是**将序列划分为已排序和未排序两部分,每次从未排序序列中选取最小值,放置到已排序序列的末尾**。第一趟比较后,可以确定最小值的元素放到最左边的位置,重复 n-1 次直至完全有序。
2025-05-27 10:00:00
333
原创 Windows 平台 TCP 通信开发指南
在 Windows 平台进行 TCP 通信开发,是网络编程中的常见需求。本文将详细讲解在 Windows 平台下,如何利用 Winsock API 实现高效的 TCP 客户端与服务端通信。
2025-05-22 22:06:50
1156
原创 为什么频繁使用 `std::endl` 会拖慢你的程序?
`std::endl = '\n' + 强制刷新`。频繁使用会导致高频 I/O 操作。**除非需要即时显示输出,否则优先使用 `\n`**。
2025-05-21 22:32:08
310
原创 串口通信DTR/DSR和RTS/CTS是什么
**设备握手阶段** :主机先拉高 DTR,设备检测到后拉高 DSR,完成初始握手。**传输控制阶段** :主机拉高 RTS 请求发送数据,设备准备好后拉高 CTS,主机收到后开始发送数据。
2025-05-18 09:00:00
2422
原创 Windows 串口通信开发实战
串口通信是嵌入式、物联网、工业控制领域的基石技术,其本质是通过操作系统 API 直接操作 UART 硬件接口完成二进制/文本协议传输。Windows 系统通过 **文件化抽象** 实现串口控制。
2025-05-16 09:00:00
986
原创 简单轻量的 C++ XML 解析库 TinyXML-2
TinyXML-2 是一个轻量级、跨平台的 C++ XML 解析库,适合快速读写小型 XML 文件,无需复杂依赖。
2025-05-14 08:15:00
545
原创 MFC 中的 Format 函数
在 MFC(Microsoft Foundation Classes)编程中,CString 类的 Format 函数是处理字符串格式化的强大工具。
2025-05-13 08:15:00
133
原创 如何用 OpenMP 轻松实现并行计算?三种常用指令详解
OpenMP(Open Multi-Processing)是一种基于编译器指令的**并行编程**接口,通过简单添加代码(如`#pragma`),自动将任务拆分为多线程并行执行,直接利用多核CPU性能。本文介绍三种最常用的指令,保证一看就会。
2025-05-12 08:15:00
622
原创 MFC开发中的消息拦截神器 PreTranslateMessage
`PreTranslateMessage` 是 MFC 中用来提前拦截并处理消息的虚函数,常用于键盘事件(如回车、ESC)的全局控制,避免消息进入默认流程。
2025-05-11 08:30:00
367
原创 轻松掌握C语言可变参数函数
C语言的可变参数就是函数能接受“不确定要传几个参数”,比如 `printf("结果:%d %s", 10, "OK")` 这种写法,靠 `<stdarg.h>` 里的方法按需读取参数。
2025-05-08 08:15:00
1225
原创 MFC中CWinApp注册表操作:快速读写配置数据
在MFC开发中,`CWinApp` 提供了一系列简便的函数用于注册表操作,这些函数特别适合存储和读取应用程序的配置数据。 `GetProfileString` 用于读取字符串类型的数据.`WriteProfileString` 用于写入字符串类型的数据。
2025-05-07 08:30:00
389
原创 C++文件指针操作:读写指针独立控制
C++将读指针和写指针分开管理,通过流对象控制。移动指针:seekg、seekp,获取位置指针:tellg、tellp。
2025-05-06 08:30:00
356
原创 C语言文件指针操作:一篇搞懂随机访问
C语言通过单一文件指针管理读写位置,所有操作共享同一个指针。fseek:移动指针;ftell:获取指针位置;rewind:重置指针到开头
2025-05-05 08:30:00
634
原创 进程通信之共享内存(Windows)
进程通信就是**不同进程之间互相传递数据和消息**,让它们能协同工作。我们这次重点说共享内存通信,直接在内存中开辟共享区域供多个进程访问。
2025-05-04 08:30:00
823
原创 简单搞懂 C++ 文件读写:`std::ofstream` 和 `std::ifstream`
文件读写是编程的必备技能。在 C++ 中,用 `std::ofstream` 写文件,`std::ifstream` 读文件。##
2025-05-03 08:30:00
1179
原创 浮点型数据的比较
浮点型数据由于在计算机中不是精确存储的,所以直接用 `==` 比较可能会得到不准确的结果。正确的做法是比较两个浮点数的差值是否在一个很小的容忍范围内。
2025-05-02 10:00:00
326
原创 轻松掌握fwrite函数
在C语言中,`fwrite` 是一个用于向文件中写入数据的函数。它允许你**将内存中的数据快速地写入到文件中**,非常高效。
2025-05-01 10:00:00
507
原创 C++ 快速读写INI文件(Windows版)
INI文件是一种简单常用的配置文件格式,通过节(Section)和键值对(Key-Value)管理配置。本文将介绍如何在C++中使用Windows API快速操作INI文件
2025-04-30 10:30:00
319
原创 快速掌握 C++ GetTickCount 测时间差,超简单!
GetTickCount() 是 Windows 自带的“计时器”,能快速测代码运行时间。
2025-04-29 20:13:24
400
原创 跨文件协作的关键字extern
简单来说,`extern` 就是 C/C++ 里一个关键字,用来声明变量或函数,告诉编译器 “这个东西存在,定义在别的地方”,它的核心作用就是**声明但不定义**,避免重复定义错误。
2025-04-28 19:01:32
357
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人