STM32CubeMX 添加 DSP 库

本文最后更新于:2026年8月29日 晚上

数字信号处理(Digital Signal Processing,简称 DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科,通过利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。

参考: STM32 中 DSP 库简单理解和使用_stm32dsp 库-CSDN 博客 STM32 DSP 库的快速添加 基于 cubemx 调用,使用 DSP 库_arm_const_structs.h 在 cubemx_四臂西瓜的博客-CSDN 博客 【stm32 开发笔记】基于 HAL 库的 STM32F4 添加 DSP 库_Casoyi_的博客-CSDN 博客 简单理解和使用 STM32 中的 DSP 库 - 物联沃-IOTWORD 物联网

通过 STM32CubeMX 添加 DSP 库

在 STM32CubeMX 中的 Software Packs Component Selector 选择勾选 DSP 库,如需下载请选择下载。

pPLhk5t

pPL4Lp6

Generate 生成项目文件

选择合适 lib 和添加

工程项目分组Drivers/CMSIS中添加 lib 文件,文件夹路径./Drivers/CMSIS/DSP/Lib/ARM/arm_cortexM7lfdp_math.lib

文件名 说明 备注
arm_cortexM7l_math.lib Cortex-M7,小端序
arm_cortexM7lfsp_math.lib Cortex-M7,小端序,单精度浮点单元
arm_cortexM7lfdp_math.lib Cortex-M7,小端序,双精度浮点单元

添加宏和包含头文件

pPL5eBQ

pPL5m7j

在使用 DSP 库的文件中包含头文件#include <arm_math.h>

配置浮点硬件运算(Floating Point Hardware)为对应的双精度浮点Double Precision

pPL53cT

代码测试

在移植了 ucosiii 系统后的项目中进行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* 实现 LED0 每 500ms 反转一次 */
void SetLed(void *p_arg)
{
OS_ERR err;
while (1)
{
task1_count += 1;
printf("task1 正在运行!!!\r\n");

data = arm_cos_f32(PI / 3); // DSP 库 余弦计算测试

LED2_sta = !LED2_sta;

LED2(LED2_sta);
OSTimeDly(500, OS_OPT_TIME_DLY, &err);
}
}

/* 检测按键输入,挂起和恢复任务 */
void ScanKey(void *p_arg)
{
OS_ERR err;
while (1)
{
task2_count += 1;
printf("task2 正在运行!!!\r\n");

data = arm_sin_f32(PI / 4); // DSP 库 正弦计算测试

key = KEY_Scan(0);
if (key == KEY1_PRES)
{
printf("挂起 task1\r\n");
OSTaskSuspend(&task1_tcb, &err);
}
else if (key == KEY2_PRES)
{
printf("恢复 task1\r\n");
OSTaskResume(&task1_tcb, &err);
}

OSTimeDly(10, OS_OPT_TIME_DLY, &err);
}
}

pPL5zvT


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!