蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
🏠 首页 /
技术文库
📖 技术文库
STM32 / Arduino / RTOS / 嵌入式 知识文章
全部
STM32
STM32 定时器
STM32 串口
STM32 ADC
Arduino 入门
STM32 看门狗
STM32 I2C
STM32 DMA
STM32 低功耗
STM32 编码器
RTOS RTOS
STM32 PWM
嵌入式 IO
STM32 SPI
STM32 中断
STM32 时钟
STM32 存储
Arduino 进阶
ESP32 WiFi
嵌入式 协议
STM32 CAN
STM32 USB
STM32 RTC
STM32 DAC
STM32 GPIO
STM32 传感器
嵌入式 架构
STM32 Boot
嵌入式 调试
STM32 电机
嵌入式 PCB
ESP32 低功耗
STM32 寄存器
嵌入式 C语言
STM32 架构
STM32 显示
STM32 外设
嵌入式 内存
STM32 工具
STM32 调试
嵌入式 稳定性
嵌入式 电源
STM32 安全
嵌入式 RTOS
嵌入式 存储
STM32 Bootloader
STM32 协议
ESP32 物联网
ESP32 OTA
ESP32 蓝牙
嵌入式 显示
嵌入式 驱动
嵌入式 电机
STM32 入门
RTOS 看门狗
嵌入式 CAN
项目 实战
嵌入式 控制
嵌入式 蓝牙
嵌入式 传感器
嵌入式
展开全部分类 (54)
STM32 HAL库中__weak函数重定义后中断仍进默认死循环的链接脚本排查
嵌入式 · 👁 71 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数(如HAL_GPIO_EXTI_Callback)来定制中断行为。但有时重定义后中断仍进入默认死循环,根源往往在链接脚本的段放置或符号解析。本文深入剖析__weak机制、链接脚本对弱符号的影响,提供完整排查步骤与代码示例,帮助开发者快速定位并解决此类隐蔽问题。
FreeRTOS下vTaskDelay与硬件定时器混用时任务抖动来源分析与实测对比
嵌入式 · 👁 77 阅读
在STM32+FreeRTOS项目中,常将vTaskDelay与硬件定时器(如TIM)混用实现周期性任务,但实测发现任务周期抖动明显。本文从SysTick优先级、中断延迟、临界区、硬件定时器中断抢占等角度剖析抖动来源,给出配置步骤与完整代码,并通过实测对比纯vTaskDelay、纯硬件定时器触发、混用三种方案的抖动数据,最后总结降低抖动的工程建议。
用DWT周期计数器做us级精确定时,替代定时器资源的实战配置
嵌入式 · 👁 75 阅读
在STM32开发中,定时器资源常被PWM、输入捕获等功能占用,导致无法满足额外的微秒级延时需求。本文介绍利用Cortex-M内核的DWT周期计数器实现高精度us级定时,无需占用硬件定时器,且精度可达CPU周期级。文章涵盖DWT原理、配置步骤、完整代码示例及注意事项,帮助开发者释放定时器资源,提升系统灵活性。
用DWT周期计数器在Cortex-M上做无侵入式函数耗时统计的实操方法
嵌入式 · 👁 66 阅读
函数耗时统计是嵌入式性能优化的第一步,但传统打点法会引入GPIO翻转或定时器读取开销,干扰被测代码。本文介绍如何利用Cortex-M内核自带的DWT周期计数器,实现纳秒级、几乎零开销的函数耗时测量。文章从DWT原理讲起,给出寄存器配置步骤、可复用的宏封装与完整示例代码,并讨论中断干扰、计数器溢出、编译器优化等实战注意事项,适合有一定STM32基础的开发者直接落地。
STM32 HAL库中__weak函数重定义后链接顺序导致行为不一致的排查方法
嵌入式 · 👁 61 阅读
在STM32 HAL库开发中,用户常通过重定义__weak函数(如HAL_InitTick、HAL_UART_RxCpltCallback)来定制行为。但有时重定义后函数并未生效,或在不同工程配置下行为不一致,根源往往是链接顺序与符号解析规则。本文深入剖析__weak机制、链接器符号选择原理,提供系统化的排查步骤、完整代码示例及避坑指南,帮助开发者快速定位并解决此类问题。
STM32 HAL库中HAL_Delay在中断上下文调用的隐性死锁复现与规避方案
嵌入式 · 👁 68 阅读
HAL_Delay依赖SysTick中断更新uwTick,若在中断服务函数中调用,会因抢占优先级导致uwTick停止递增,形成隐性死锁。本文剖析其原理,给出复现步骤与完整代码,并提供基于DWT、定时器或状态机的三种规避方案,帮助开发者规避这一常见陷阱。
STM32 HAL库DMA+空闲中断接收不定长串口数据的环形缓冲区实现与溢出防护
嵌入式 · 👁 63 阅读
串口不定长数据接收是嵌入式开发的高频需求。本文基于STM32 HAL库,利用DMA搬运与USART空闲中断配合环形缓冲区,实现高效、无阻塞的不定长数据接收,并重点讲解缓冲区溢出检测、丢包防护与错误恢复策略。文章包含原理剖析、CubeMX配置步骤、完整可移植代码及实战注意事项,适合有一定HAL库基础的开发者参考。
STM32 DMA+空闲中断接收变长串口帧:彻底解决半包与粘包导致的解析错位
嵌入式 · 👁 82 阅读
串口变长帧接收中,DMA+空闲中断是高效方案,但半包(帧未收完就触发中断)和粘包(多帧连在一起)常导致解析错位。本文深入剖析空闲中断触发机制与DMA传输计数的关系,提出“双缓冲+帧头帧尾校验+超时重同步”的健壮策略,并给出基于STM32 HAL库的完整代码实现,包含环形缓冲区管理、帧提取状态机及错误恢复流程,帮助开发者构建工业级可靠串口通信。
DMA+空闲中断接收ESP32 UART不定长帧时丢首字节的排查与修复
嵌入式 · 👁 78 阅读
本文针对ESP32 UART使用DMA+空闲中断接收不定长帧时首字节丢失的典型问题,从硬件时序、DMA配置和中断处理三个层面剖析原因,给出寄存器级排查步骤与完整修复代码。通过调整DMA触发阈值、优化空闲中断服务程序并增加首字节保护机制,彻底解决丢字节问题,适用于Modbus、自定义协议等场景。
ESP32双核下xTaskCreatePinnedToCore固定任务核后串口打印乱序的定位与解决
嵌入式 · 👁 94 阅读
ESP32双核运行FreeRTOS时,使用xTaskCreatePinnedToCore将任务固定到指定核心可提升实时性,但常导致串口打印乱序。本文分析乱序根源:多核并发访问UART、任务优先级与调度、打印函数非原子性。给出三种解决方案:互斥锁保护、专用打印任务+队列、原子化打印函数。包含完整代码示例与配置步骤,帮助开发者彻底解决乱序问题。
ESP32双核任务看门狗超时:从任务饥饿到TWDT触发路径的逐层定位
嵌入式 · 👁 90 阅读
ESP32双核环境下任务看门狗(TWDT)超时往往并非简单的喂狗遗漏,而是任务饥饿、优先级反转或临界区过长导致的连锁反应。本文从TWDT硬件机制与FreeRTOS调度原理出发,逐层剖析超时触发路径,给出可复现的饥饿场景、配置步骤与完整诊断代码,并总结定位技巧与规避注意事项,帮助开发者快速锁定根因。
STM32 HAL库中__weak函数覆盖机制在中断回调中的实际应用与陷阱
嵌入式 · 👁 119 阅读
本文深入剖析STM32 HAL库中__weak函数覆盖机制在中断回调中的工作原理,通过原理讲解、配置步骤和完整代码示例,展示如何正确重写HAL_UART_RxCpltCallback等回调函数,并揭示常见陷阱:重复定义、未调用HAL_UART_Receive_IT导致中断只触发一次、回调中执行耗时操作等。适合有一定基础的嵌入式开发者阅读,帮助规避实际项目中的坑。
‹
1
...
7
8
9
...
182
›