STM32单片机片上数字滤波器操作文档 快速入门数字滤波器在单片机上的实现
2025-07-30 来源:elecfans
上节课我们在STM32F103C8T6上实现了频率计的功能,我们在上次的基础上进行下一步的操作。
首先,关于数字滤波器分为FIR和IIR两种(如果不明白,需要去查阅资料),在这里我们关心我们怎么得到我们想要滤波器的参数。
我们打开matlab。

在命令行窗口中输入filterDesigner。

我现在想设计一个IIR的低通滤波器,他的截止频率是10Hz,巴特沃斯型,这里的采样频率需要根据我们之前上课的时候设计的ADC的采样频率一致(250Hz)

这个滤波器设计器有很多的功能,这个留给大家探索。

依次点击目标->生成c头文件

直接点击生成,(记住自己保存在哪里了),然后我们找到我们保存STM32CubeMX生成的.ioc文件,接下来把刚刚生成的文件保存在如图所示的文件中。



我们用记事本打开fdacoefs.h文件,他会告诉我们还需要添加一个.h文件

我们找到这个文件,也复制到这个文件夹下。

到这里基本的参数有关的生成以及,文件的移动已经完成了。接下来我们开始代码的操作。
(本文来自看海的四代目徒弟:XJIE
https://blog.csdn.net/NANY_ying?type=blog
https://github.com/xiaojie25)

在main.c中包含刚刚我们添加的这两个文件。然后编译这个工程。

右键这个fdacoefs.h文件。打开它

我们把里面的4个数组都剪切到mian.c中。

我们先定义两个结构体,用来记录我们的滤波器的参数。

其中,Biquad是各个节(这个数字滤波器的知识)中的参数,IIRFilter是整个滤波器的结构体,然后我们在代码合适的地方写下这两个函数。

IIRFilter_Init是对滤波器的初始化,就是把我们刚刚生成的参数填入我们定义的滤波器,
IIRFilter_Process是有数据来的时候,对数据进行滤波。

先定义一个iir滤波器并对其进行初始化。

我们把ADC采集到的电压通过滤波器滤波,我们来看看效果吧!
我左边给的是5Hz的信号,右边给的是15Hz的信号,都是100mVpp,由于低通滤波的截至频率是10Hz,因此5Hz的信号通过了滤波器,而15Hz的信号被滤波器衰减。

- 意法半导体中国本地造STM32微控制器启动规模量产
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 基于机智云与STM32的智能拐杖安全监测系统在养老物联网中的应用
- 内置全栈安全,一站式满足CRA法案与IEC 62443标准——米尔STM32MP257核心板
- 如何用 STM32 FLASH 实现等效 100 万次擦写的 EEPROM 功能?
- 实战解析:通过一个小项目掌握STM32所有外设
- STM32学了两年半,却还是不会做项目
- 意法半导体推出最新STM32MP21微处理器,兼具高性价比、低功耗、高灵活性
- 基于STM32的矿井作业环境监测系统设计与实现
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策




