STM32使用DSP库 Keil方式添加

devtools/2025/1/22 4:04:22/

文章目录

  • 前言
  • 一、添加DSP库
  • 二、使能FPU及配置
    • 1. 使能FPU
    • 2. 增加编译的宏
    • 3.增加头文件的检索路径
  • 三. 验证
    • 1. 源码中添加
    • 2.代码测试


前言

添加DSP有两种方案,本文采用的是是Keil 中添加。


一、添加DSP库

在创建好的工程中添加DSP库:步骤如下:
在这里插入图片描述
步骤1:选择运行环境管理;
步骤2:选择需要添加DSP库,此处使用Library的方式添加。

添加成功后,在工程中的显示如下:
在这里插入图片描述
注意:添加库的名称必须是arm_cortexM4lf_math.lib,否则会有问题。
注:‘b’表示大端格式(Big Endian),‘l’表示小端格式(Little Endian),‘f’表示带浮点数。

二、使能FPU及配置

1. 使能FPU

选择魔法棒,配置FPU。
在这里插入图片描述

2. 增加编译的宏

在这里插入图片描述
增加编译选项,ARM_MATH_CM4 根据对应的芯片进行修改:F1是M3,F4是M4,H7是M7

ARM_MATH_CM4

注意:如果没有添加ARM_MATH_CM4,则在编译的时候会出现如下错误:

..\Drivers\CMSIS\DSP\Include\arm_math.h(341): error:  #35: #error directive: "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML"#error "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML"
..\Core\Src\App\AppTaskMain.c: 0 warnings, 1 error

注意:新版CMSIS库可能需要定义__TARGET_FPU_VFP=1和ARM_MATH_CM4等宏来启用FPU。如果提示错误缺少FPU,则需要添加如下宏:

__TARGET_FPU_VFP,__FPU_PRESENT=1U

3.增加头文件的检索路径

在这里插入图片描述
在这里插入图片描述
增加DSP的头文件检索路径,注意该路径为:…\Drivers\CMSIS\DSP\Include
否则会出现大量的错误,如下所示:

C:\Users\qinbo\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\DSP\Include\arm_math.h(6491): error:  #65: expected a ";"int32_t i;                                   

http://www.ppmy.cn/devtools/152493.html

相关文章

Spring参数校验,数组入参校验 :List<E>

1、程序内直接校验 参数进入控制层方法,使用具体的参数方法来验证,灵活不优雅 Objects.isNull() String.isEmpty()2、验证 单对象(Obj)使用 Validated 优雅,不灵活,对象类配置多 首先在对象类中 1、校验…

kafka学习

kafka (消息、生产者、消费者、toptic、分区、偏移量、broker、集群) Kafka是什么? 学习Kafka的目的,为了解决高吞吐量项目的需求,Kafka号称大数据的杀手锏,这款为大数据而生的消息中间件,以其百亿级tps的吞吐量名声…

nacos安装及SpringCloud整合

参考资料: 参考视频 参考demo SpringCloud-Alibaba基础框架搭建 nacos官网 nacos部署教程: 1.准备环境 - 1.64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。 - 2.64 bit JDK 1.8+;下载 & 配置。 - 3.Maven 3.2.x+;下载 & 配置。 2.版本选…

Django多线程爬虫:突破数据抓取瓶颈

Django框架以其高效、安全、可扩展性强等特点,在Web开发领域得到了广泛应用。同时,Python语言的多线程支持和丰富的库也为开发多线程爬虫提供了便利。将Django与多线程技术相结合,不仅可以利用Django的强大功能进行项目管理和数据存储&#x…

HTML中相对路径和绝对路径详解

文章目录 HTML中相对路径和绝对路径详解一、引言二、绝对路径1、定义2、使用场景3、代码示例 三、相对路径1、定义2、使用方法3、代码示例 四、使用示例1、图片路径2、CSS和JavaScript文件路径3、页面内部链接 五、总结 HTML中相对路径和绝对路径详解 一、引言 在HTML开发中&a…

MySQL面试题2025 每日20道【其四】

1、你们生产环境的 MySQL 中使用了什么事务隔离级别?为什么? 中等 在生产环境中,MySQL数据库的事务隔离级别通常由开发团队或数据库管理员根据应用的需求来设定。MySQL支持四种标准的事务隔离级别: 读未提交(Read Unc…

【useReducer Hook】集中式管理组件复杂状态

文章目录 引言语法项目结构定义 ReducerCounterReducer.ts 定义类型types.ts 使用 useReducer 管理状态Counter.tsx 应用入口App.tsx 解释与总结useReducer 的作用示例中的具体实现注意事项 引言 在 React 中,useState 是一个常用的 Hook,用于管理组件的…

STM32-串口-UART-Asynchronous

一,发送数据 #include "stdio.h" uint8_t hello[]"Hello,blocking\r\n"; HAL_UART_Transmit(&huart1,hello,sizeof(hello),500); 二,MicroLIB-printf(" hello\r\n") #include "stdio.h" #ifdef __GNUC…