DSP 库的下载
本文使用使用STM32Cube_FW_F3_V1.11.0软件包进行DSP库移植
STM32Cube_FW_F3_V1.11.0软件包下CMSIS文件夹内容:
![](https://img-blog.csdnimg.cn/557fe76ccb874351962e4650fad4b102.png)
移植DSP库到HAL库工程模板中
1、DSP 库的Include 文件夹下的头文件拷贝到stm32f373_DSP_Templates\Drivers\CMSIS\Include下
2、DSP 的源码文件Source 文件夹拷贝到stm32f373_DSP_Templates\Drivers\CMSIS下
![](https://img-blog.csdnimg.cn/fd758a5e3cde4f52949a34f5b6a27f89.png)
◆ arm_cortexM4lf_math.lib
Cortex-M4 内核,l 表示小端格式,f 表示带 FPU 单元,M4 仅支持 Single Precision 单精度浮点。
◆ arm_cortexM4l_math.lib
Cortex-M4 内核,l 表示小端格式。
◆ arm_cortexM4bf_math.lib
Cortex-M4 内核,b 表示大端格式,f 表示带 FPU 单元,M4 仅支持 Single Precision 单精度浮点。
◆ arm_cortexM4b_math.lib
Cortex-M4 内核,b 表示大端格式。
STM32F3 是 M4 内核,单精度浮点,一般使用小端格式,所以我们选择库
arm_cortexM4lf_math.lib
打开工程并在左侧添加分组CMSIS/DSP: arm_cortexM4lf_math.lib
添加对应的宏定义ARM_MATH_CM4和ARM_MATH_LOOPUNROLL
用到 DSP 库函数的文件得添加#include "arm_math.h"就可以调用 DSP 库的 API 了
移植后测试
int main(void)
{
uint8_t ucKeyCode; /* 按键代码 */
float32_t pSrc;
float32_t pDst;
q31_t pSrc1;
q31_t pDst1;
q15_t pSrc2;
q15_t pDst2;
bsp_Init(); /* 硬件初始化 */
PrintfInfo();
while (1)
{
/* 读取键值, 无键按下时返回 KEY_NONE = 0 */
ucKeyCode = Key.Get();
if (ucKeyCode != KEY_NONE)
{
/* 有键按下 */
switch (ucKeyCode)
{
case K1_DOWN: /* K1键按下 */
pSrc = -1.23f;
arm_abs_f32(&pSrc, &pDst, 1);
printf("pDst = %f\r\n", pDst);
break;
case K2_DOWN: /* K2键按下 */
pSrc1 = -1;
arm_abs_q31(&pSrc1, &pDst1, 1);
printf("pDst1 = %d\r\n", pDst1);
break;
case K1K2_DOWN: /* K1K2键按下 */
pSrc2 = -1;
arm_abs_q15(&pSrc2, &pDst2, 1);
printf("pDst2 = %d\r\n", pDst2);
break;
default:
break;
}
}
}
}
对应模板工程已上传资源
产品介绍
https://seeker.taobao.com/