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

wb-code

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

公告

2026年1月13日

startup_stm32fxxx.s启动文件的作用

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

posted @ 2026-01-13 00:10 心事不在脸上 阅读(10) 评论(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 心事不在脸上 阅读(6) 评论(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 心事不在脸上 阅读(3) 评论(0) 推荐(0)

2025年12月29日

嵌入式组件及其一些思考

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

posted @ 2025-12-29 23:00 心事不在脸上 阅读(9) 评论(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 心事不在脸上 阅读(5) 评论(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 心事不在脸上 阅读(2) 评论(0) 推荐(0)

回调函数

摘要: 回调函数 作用:解耦合。模块间通过清晰的API接口进行联系,减少模块间的耦合。 例如:利用UART中断控制LED亮灭,当串口接收到特定数据时对LED进行控制,正常情况下应该是在中断服务函数中编写对LED的控制程序,这样会使得两个模块之间耦合联系过深,不利于移植和通用性的实现。 使用回调函数就可以实现 阅读全文

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

2025年12月16日

指针传递和值传递的建议

摘要: 例子:对于嵌入式字体,结构体通常包含: typedef struct { uint8_t height; // 字体高度 uint8_t width; // 可能没有,或固定比例 const uint8_t *model; // 字体数据指针(最重要!) // 可能还有其他属性:起始字符、结束字符等 阅读全文

posted @ 2025-12-16 14:33 心事不在脸上 阅读(4) 评论(0) 推荐(0)

2025年12月12日

C与C++中数组退化为指针的情况

摘要: 数组退化的常见场景: 1、函数的参数传递 void func(int arr[]) { // 实际上是指针 int* arr // sizeof(arr) 是指针大小,不是数组大小 } int main() { int arr[5] = {1, 2, 3, 4, 5}; func(arr); // 阅读全文

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

2025年12月2日

【编程技巧】do{..........}while(0)在嵌入式中的作用

摘要: 主要作用: 1、避免宏展开时的语法错误 // 有问题的宏定义 #define SWAP(a, b) \ temp = a; \ a = b; \ b = temp; // 使用时 if (x > y) SWAP(x, y); // 展开后语法错误!多了一个; 2、强制使用分号 使用 do while 阅读全文

posted @ 2025-12-02 01:44 心事不在脸上 阅读(8) 评论(0) 推荐(0)

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