自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言解析JSON字符串指南(含结构体、结构体数组+使用cJSON)

如何将JSON解析成值、结构体、结构体数组等

2025-03-31 11:21:10 1834

原创 C语言拼接4字节数据为uint32_t

将4个字节数据拼接成一个uint32_t可以使用位操作(位移和按位或)来实现。假设你有4个字节abcd(类型为uint8_t),你可以按照大端序(Big-Endian)或小端序(Little-Endian)的方式拼接。

2025-05-23 15:18:53 222

原创 memcpy 函数的使用 (C语言)

memcpy 是 C 语言标准库中的一个重要函数,用于在内存之间复制数据

2025-05-22 17:21:25 357

原创 串口DTR信号作用与应用解析

数据终端就绪)是RS-232标准中的一个控制信号,主要用于串行通信中表示设备的就绪状态。:RTS(Request to Send)用于请求发送数据,而DTR表示全局就绪状态。:与DCE设备的DSR(Data Set Ready)配合,实现双向就绪检查。:在USB转串口适配器中,DTR可能被映射为控制功能(如复位MCU)。:终端程序(如PuTTY)可手动控制DTR信号,或依赖它检测连接状态。:若设备未使用DTR但信号被激活,可能导致意外行为(如误复位)。(公头)/ Pin 6(母头,部分设备可能不同)。

2025-05-20 10:42:10 268

原创 C语言指针循环使用指南

在C语言中,指针的循环使用是一种常见技术,主要用于遍历数组、字符串、动态内存管理以及二维数组等数据结构。

2025-05-13 11:35:14 142

原创 C语言多指针内存管理优化

在C语言中,管理多个字符指针的内存分配和释放可以通过多种方式实现。

2025-05-13 11:25:57 370

原创 Keil 中遇到 “头文件已包含但结构体未定义” 的问题

头文件已包含但结构体未定义” 问题

2025-05-08 16:38:53 457

原创 结构体内存对齐规则与优化

内存对齐是计算机系统中一种重要的内存管理机制,它要求数据在内存中的地址必须是某个值(通常是2、4、8等2的幂次方)的倍数。

2025-05-06 14:54:05 374

原创 C语言结构体内存对齐使用场景

#pragma pack(push, 1) 和 #pragma pack(pop)

2025-05-06 11:10:12 373

原创 C语言位域与结构体打包技术

位域和结构体打包技术可以有效地减少内存使用,特别适用于嵌入式系统或需要与硬件/网络协议交互的场景。但使用时需要注意潜在的性能影响和可移植性问题。

2025-05-06 10:33:36 326

原创 取某位bit值,并赋值给其他变量对应bit位

如果是简单的 bit 提取,如果要取出一个字节

2025-04-29 15:31:32 298

原创 C语言按位操作符

直接对整数的二进制位(bit)进行操作,常用于底层编程、硬件控制或性能优化场景。

2025-04-29 15:02:22 1033

原创 数字转成字符串

以下是用C语言编写的函数,将数字转成字符串。

2025-04-29 10:31:08 317

原创 C语言实现卡ID启用排序

根据bindflag的高七位比特位来对userCardId数组进行重新排序,使得启用的卡 ID 排在前面,禁用的卡 ID 排在后面,并更新。

2025-04-28 15:38:28 139

原创 C语言实现卡ID删除与排序

根据bindflag的高七位 bit 来管理userCardId数组中卡 ID 的启用/禁用状态删除指定的卡 ID 后,需要重新排序数组,将有效的卡 ID 移到数组前面更新为当前有效的卡数更新bindflag使其高七位 bit 与新排序后的卡 ID 状态对应。

2025-04-28 14:22:09 179

原创 循环与switch的嵌套使用

for循环和switch语句可以相互嵌套使用。在编程中,这种嵌套结构是完全合法的,并且在实际开发中经常使用。

2025-04-27 14:53:16 274

原创 memcpy 使用指南 (C语言)

memcpy是 C 语言标准库中的一个重要函数,用于在内存区域之间复制数据。它是<string.h>头文件中定义的高效内存操作函数之一。

2025-04-27 14:25:39 334

原创 C语言结构体赋值与深拷贝

相同类型的结构体:直接赋值即可。含指针的结构体:需手动实现深拷贝,避免共享内存。

2025-04-27 14:23:06 330

原创 memset 函数使用指南

memset是 C/C++ 标准库中的一个内存操作函数,用于将一段内存区域填充为指定的值。

2025-04-27 14:15:39 187

原创 for循环中j++的执行时机

在for循环中,j++是在循环体的代码执行完之后才执行的。

2025-04-27 10:54:37 303

原创 C语言中操作字节的某一位

在C语言中,可以使用位操作来设置或清除一个字节中的特定位。

2025-04-25 15:37:28 288

原创 C语言实现字符串封装与拼接

如何将3个值封装成字符串的形式

2025-04-25 13:58:21 238

原创 cJSON中#define cJSON_IsReference 256 和 #define cJSON_StringIsConst 512这定义的大小是?

确保它们不会与 JSON 数据类型(低 8 位)冲突,并能高效地进行标志管理。:cJSON 设计为轻量级,适用于嵌入式系统,位操作是最优选择。字段的低 8 位(0-7)用于存储 JSON 数据类型(如。等),而高位(8-15)用于存储额外标志。更高效,尤其是在频繁操作 JSON 树时。这两个宏的值(256 和 512)是。(第 10 位为 1,其余为 0)(第 9 位为 1,其余为 0):存储 JSON 数据类型(如。,以标记不同的对象属性。变量会占用更多内存。在 cJSON 中,,对应二进制表示中的。

2025-04-25 09:43:28 405

原创 C语言中封装JSON数组对象

在C语言中处理JSON数组对象,你可以使用一些流行的JSON库,如 cJSON、Jansson 或 json-c。下面我将以 cJSON 为例,展示如何创建、封装和处理JSON数组对象。

2025-04-24 15:54:33 232

原创 使用cJSON封装C语言数据结构体

cJSON是一个轻量级的C语言JSON解析库,可以方便地将C语言数据结构转换为JSON格式,或者将JSON数据解析为C语言数据结构。下面介绍如何使用cJSON来封装和解析C语言中的结构体。

2025-04-24 11:34:33 251

原创 在C语言中获取1字节的每一位bit信息

在C语言中,要获取一个字节(8位)的每一位bit信息,有几种常用的方法。

2025-04-24 11:23:14 548

原创 else if 在 C 语言中的使用

在 C 语言中,else if用于在if语句之后添加额外的条件判断。它允许你在第一个条件不满足时检查其他可能的条件。

2025-04-23 15:07:47 230

原创 枚举(enum)在C语言中的使用

枚举(enum)是C语言中一种用户定义的数据类型,用于给整数值赋予有意义的名称,使代码更易读和维护。简单示例自定义枚举值使用typedef简化枚举与switch语句结合枚举的大小在C语言中,枚举类型的大小通常是的大小(通常是4字节),因为它实际上存储的是整数值。注意事项 枚举元素是常量,不能修改不同枚举中的枚举元素名称不能相同枚举本质上是整数,可以直接与整数比较枚举可以提高代码可读性,但不会增加类型安全性(编译器不会阻止你将任意整数值赋给枚举

2025-04-23 14:58:29 199

原创 单片机获取真实时间的实现方法

单片机获取真实时间(即当前的年月日、时分秒等)通常需要依赖外部时间源或模块,因为单片机本身没有内置的实时时钟(RTC)功能。

2025-04-23 09:53:38 853

原创 从GNRMC语句中获取时间的C语言实现

GNRMC是NMEA 0183协议中的推荐最小定位信息语句,包含时间、日期、定位等信息。下面是如何在C语言中从GNRMC语句中提取时间的实现方法。

2025-04-23 09:43:16 210

原创 C语言中的bool类型详解

bool是C语言中用于表示布尔值(真/假)的数据类型。在C99标准之前,C语言并没有原生的布尔类型,但C99及后续标准引入了_Bool关键字和头文件来支持布尔类型。

2025-04-22 09:51:10 426

原创 C语言中联合体(Union)和结构体(Struct)的嵌套用法

联合体和结构体是C语言中两种重要的复合数据类型,它们可以相互嵌套使用,为复杂数据的表示提供了灵活的方式。

2025-04-21 11:34:25 524

原创 cJSON_Print 和 cJSON_PrintUnformatted的区别

特性输出格式格式化(易读)紧凑(无空格/换行)适用场景调试、日志网络传输、存储字符串大小较大(含格式字符)较小(无冗余字符)

2025-04-19 14:27:49 389

原创 使用C语言的cJSON中给JSON字符串添加转义

如果你有特殊需求(如仅转义字符串而不生成完整 JSON),可以自己实现转义函数(参考上面的。,让 cJSON 在序列化时自动处理转义,避免手动管理转义逻辑。时会自动处理转义字符,确保生成的 JSON 字符串是合法的。

2025-04-19 14:18:28 325

原创 FreeRTOS 中软件定时器导致 HardFault_Handler 的原因分析

在 FreeRTOS 中使用软件定时器时遇到 HardFault 错误是一个常见问题,通常与内存管理、堆栈溢出或资源访问冲突有关。

2025-04-17 10:07:46 1005

原创 BCD格式详细介绍

BCD(Binary-Coded Decimal,二进制编码的十进制)是一种数字编码方式,它使用4位二进制数来表示一个十进制数字(0-9)。与直接将数字转换为二进制不同,BCD保持了十进制数的位结构,只是用二进制形式表示每个十进制数字。

2025-04-15 11:23:50 355

原创 使用 J-Flash 读取芯片 Flash 数据的方法

或选择 "Target" > "Read back" > "Range..." 指定要读取的地址范围。点击 "Target" > "Read back" > "Entire chip"(读取整个芯片)读取完成后,选择 "File" > "Save Data File As..."点击 "Target" > "Connect" 或工具栏上的连接图标。选择 "File" > "New Project" 创建新项目。使用 "View" > "Memory" 打开内存查看窗口。读取受保护的芯片可能需要先解除保护。

2025-04-07 15:56:30 270

原创 Keil中关闭宏定义提示方法

keil中的写代码宏定义提示哪里关

2025-04-03 17:58:02 313

原创 C语言实现的Bootloader

以下是一个简单的bootloader实现,用于从备份地址(0x08040000)将应用程序复制到运行区(0x08004000),页大小为4KB。这个实现适用于STM32系列微控制器,使用了标准外设库。

2025-04-03 15:20:37 266

原创 bootloader+APP中,有些APP引脚无法正常使用?

主控芯片GD32F415,多次测试给PB13引脚给高电平,均为成功。经过分析得知,是PB13引脚在。

2025-04-02 14:52:40 466

空空如也

空空如也

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

TA关注的人

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