自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【电赛信号题必备】基于STM32F4的全数字锁相放大器实现

本文提出了一种基于STM32F407+FPU的全数字双通道锁相放大器方案,解决了传统模拟方案外围电路复杂、相位测量不精确等问题。该方案采用协方差数学修正算法实现零相移,相位差测量精度达0.04°。通过32位相位累加器、CCM RAM查表和线性插值算法提高信号纯度,利用双重ADC和DMA乒乓缓存实现双通道同步。经MATLAB仿真和硬件测试验证,该方案在强噪声环境下仍能稳定提取信号相位,且运算效率高、CPU占用率低。项目提供完整源码和文档支持,适用于电赛仪器、光电检测等领域。

2025-12-18 01:12:57 1479 1

原创 【FreeRTOS入门】两个Delay函数

在 STM32 + FreeRTOS 的开发中,延时是最基础的功能。很多初学者(包括使用 CubeMX 生成代码的开发者)在刚开始接触时,往往只会用 vTaskDelay(或 CMSIS 层的 osDelay)。当你只想让 LED 闪烁或者按键消抖时,vTaskDelay 很好用。但是,当你试图用它去控制一个PID 闭环波形发生器或者定频率的 ADC 采样时,你会发现系统越跑越慢,时间越跑越偏。这并非系统 Bug,而是你选错了“工具”。

2025-11-30 01:45:27 1084

原创 【FreeRTOS入门】通过一个小实验了解环形缓冲区

任务A(生产者):负责生产数据(例如:DHT11 每500ms读取一次温湿度)。任务B(消费者):负责处理数据(例如:OLED屏幕需要刷新显示)。初学者的常见做法// 全局变量// DHT11任务写:global_temp = read();// OLED任务读: display(global_temp);这种做法的弊端数据丢失:如果OLED刷新很慢,而DHT11读得很快,中间的数据就被覆盖了(虽然在这个例子中DHT11较慢,但在高速ADC采集中很常见)。读写冲突。

2025-11-29 20:23:22 1095

原创 【FreeRTOS入门】手写一个简易malloc,彻底搞懂内存管理的核心逻辑

很多嵌入式初学者在使用 FreeRTOS 时,只会机械地调用 pvPortMalloc 和 vPortFree,一旦遇到内存泄漏栈溢出或者系统卡死,就束手无策了。其实,FreeRTOS 的内存管理(特别是常用的 heap_4.c)并没有那么神秘。它本质上就是在一块大数组上进行“切蛋糕”和“拼蛋糕”的游戏。今天,我们就利用 C 语言最基础的指针和链表知识,手写一个简易版的内存管理器。读懂了这段代码,你就读懂了 FreeRTOS 内存管理的 80%!这不到 80 行的代码,就是RTOS内存管理的雏形。

2025-11-28 16:12:58 916 1

原创 【电赛信号题必备】加权平均滤波(EWMA)算法

在单片机开发(如 STM32)中,我们经常使用 ADC 采集传感器数据。但由于电源纹波、线路干扰等原因,读出来的原始数据往往会上下跳动(噪声)。很多同学的第一反应是使用均值滤波(采集 N 次求平均)。占用内存:需要定义一个数组 buffer。滞后性:N 越大,滞后越严重。今天分享一个更高效的算法——EWMA(指数加权移动平均),也常被称为一阶低通滤波。它不需要数组,只需要记录上一次的滤波结果,就能实现非常丝滑的滤波效果。EWMA 是一种性价比极高的算法。

2025-11-28 00:03:34 1218 1

原创 【电赛信号题必备】轻量级 Complex 复数运算模块

在嵌入式开发中,标准 C 库对复数的支持往往不尽如人意,而庞大的 DSP 库对于简单的标量复数运算又显得过于臃肿。本文提供了一个纯 C 语言实现的通用复数(Complex)运算库,填补了 HAL 库在基础复数计算上的空白。代码实现了复数的定义、加减乘除及模运算,重点解决了复数除法中分母趋近于 0 导致的计算溢出问题(引入 1e-9 容差机制)。该模块具有极高的可移植性和鲁棒性,非常适合用于电赛信号处理算法的底层实现。

2025-11-27 22:18:49 1239 2

STM32F407 HAL库 DDS AD9910代码参考示例

本文件是通过stm32F07片内的spi外设(硬件spi)与AD9910通信,实现DDS输出,可以生成支持改变频率,幅值,相位的正弦波。也可以生成矩形波,三角波,sinc波,这几个波的波形数据需要自己在matlab上生成,本代码只提供示例

2025-07-11

空空如也

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

TA关注的人

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