• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wb-code

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

2026年3月11日

CRC(循环冗余校验)

摘要: 推荐视频:【[CRC校验]手算与直观演示】 https://www.bilibili.com/video/BV1V4411Z7VA/?share_source=copy_web&vd_source=aa01db4de35fb1b44860cdd9aa71f643 详细讲解实现原理,也就是直接计算法。 阅读全文

posted @ 2026-03-11 21:29 心事不在脸上 阅读(9) 评论(0) 推荐(0)

2026年3月9日

结构体内存对齐

摘要: 一、结构体怎么对齐? 1、先计算每个成员变量的对齐数。 对齐数 = 操作系统的默认的对齐数与各个成员变量数据类型大小的较小者 例:int类型大小为4字节,而64位操作系统对齐数就是8字节,(4<8)那int类型对齐数就定为4字节。 2、成员变量要对齐到自身对齐数的整数倍的地址处。 例:int类型变量 阅读全文

posted @ 2026-03-09 18:51 心事不在脸上 阅读(3) 评论(0) 推荐(0)

2026年3月1日

keil中 .axf .bin .hex文件的认识

摘要: keil mdk给stm32烧录程序,烧录的是什么.hex文件还是.bin文件? KEIL MDK默认一般情况下编译后生成的是.axf(包含调试信息)和.hex(用于烧录),默认是烧录.hex文件。(不是说.axf不能进行烧录,只是大多数情况下,点击keil中的下载程序按钮,执行的是烧录.hex文件 阅读全文

posted @ 2026-03-01 21:39 心事不在脸上 阅读(29) 评论(0) 推荐(0)

2026年1月30日

函数实现返回多个值

摘要: 对于C语言来说,通常函数只能返回一个值,但是这并不意味着不能实现返回多个值。 有以下几个方法可实现: 使用指针参数是最常见的方法,它简单直接; 使用结构体则提供了更好的代码组织和类型安全; 全局变量虽然可行但通常不推荐; 而数组则适用于返回同类型的多个值。 使用指针参数传递多个返回值是最常见的方式。 阅读全文

posted @ 2026-01-30 22:31 心事不在脸上 阅读(11) 评论(0) 推荐(0)

2026年1月13日

startup_stm32fxxx.s启动文件的作用

摘要: 启动文件主要完成的与C语言运行环境相关的任务包括: 1.初始化堆栈指针(SP) 这是第一件也是最重要的事。启动代码会从向量表的第一个条目加载初始堆栈指针的值到SP寄存器。没有正确的栈,C函数的局部变量、函数调用和中断都将无法工作。 2.设置向量表 定义中断服务程序的入口地址。向量表通常位于Flash 阅读全文

posted @ 2026-01-13 00:10 心事不在脸上 阅读(20) 评论(0) 推荐(0)

2026年1月7日

STM32 GPIO输出速率的意义?

摘要: 一、输出速率物理意义: 高速率->边沿陡峭 低速率->边沿平缓 2、功耗考虑 速率越高,功耗也会越高 // 电池供电设备的优化 void power_save_gpio_config(void) { // 非关键GPIO用低速 set_gpio_speed(LED_PIN, LOW_SPEED); 阅读全文

posted @ 2026-01-07 20:12 心事不在脸上 阅读(17) 评论(0) 推荐(0)

2025年12月30日

UART发送数据效率与可靠性问题

摘要: void ESP32_Writecommand(const char *command) { while(*command) { while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); USART_SendData(USART2,*comm 阅读全文

posted @ 2025-12-30 16:49 心事不在脸上 阅读(7) 评论(0) 推荐(0)

2025年12月29日

嵌入式组件及其一些思考

摘要: 嵌入式开发中常用的软件组件/设计模式有哪些? 嵌入式开发中常用的软件组件和设计模式非常丰富,以下是系统性的分类总结: 一、核心数据结构组件 环形缓冲区 (Ring Buffer/Circular Buffer) 串口通信数据缓存 日志系统缓存 音频数据处理 ** 队列 (Queue)** 消息队列: 阅读全文

posted @ 2025-12-29 23:00 心事不在脸上 阅读(16) 评论(0) 推荐(0)

2025年12月19日

函数指针变量使用static关键字几个重要原因

摘要: 一、static的三种用法回顾 // 1. static用于局部变量:保持值不变 void func(void) { static int count = 0; // 只初始化一次,值在调用间保持 count++; } // 2. static用于全局变量:限制作用域到当前文件 static int 阅读全文

posted @ 2025-12-19 13:08 心事不在脸上 阅读(9) 评论(0) 推荐(0)

typedef void(*func)(int) VS void(*func)(int) 的区别

摘要: 一、本质区别 1、void(*func)(int) ——声明变量 func是一个变量 占用内存空间(通常4或8字节) 可以赋值、可以修改 作用域为当前代码块 2、 typedef void(*func)(int) - 类型定义 func是一个类型名 不占用内存空间(编译时概念) 用于声明多个同类型变 阅读全文

posted @ 2025-12-19 12:56 心事不在脸上 阅读(10) 评论(0) 推荐(0)

下一页
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3