STM32CubeMX添加DSP库

本文最后更新于:2023年10月4日 中午

STM32CubeMX添加DSP库

  数字信号处理(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库,如需下载请选择下载。

下载DSP库

勾选DSP库

  Generate生成项目文件

二、选择合适lib和添加

  工程项目分组Drivers/CIMSIS中添加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,小端序,双精度浮点单元

三、添加宏和包含头文件

添加宏

头文件路径添加

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

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

配置浮点硬件运算

四、代码测试

  在移植了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);
}
}

代码测试


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