【stm32开发笔记】基于HAL库的STM32F4添加DSP库

这篇具有很好参考价值的文章主要介绍了【stm32开发笔记】基于HAL库的STM32F4添加DSP库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

本文分两种方法添加DSP库:1.CubeMX直接配置ioc添加; 2.KEIL内添加;

一、MX直接配置DSP库

简述:补齐全部lib库->添加DSP包->使能DSP勾选->添加头文件及魔术棒配置->测试
1.补齐lib库。( 如果使用直接默认添加的库,是不支持FPU的,所以需要补齐后找到所需的lib文件进行替换,在MX的工程管理栏,选择复制所有库)。

此处添加的DSP文件夹位置:Project...\Drivers\CMSIS\DSP

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
生成工程后,带FPU的lib文件位置\Drivers\CMSIS\Lib\ARM,注意所圈文件的位置,后面需手动添加到工程

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

2.添加DSP芯片包。stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
3.使能DSP,生成代码。(此处勾选后共会有两份dsp文件夹,第一份是现在在这个包管理添加的,第二份是在之前补齐dsp全部库时添加的,相当于二选一,而mx会在keil的路径管理中自动添加第一份dps的头文件路径)。

此处添加的DSP文件夹位置:Project...\Middlewares\ST\ARM\DSP

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

注意:
通过MX勾选方式添加,无需额外添加DSP的头文件路径(包括后面替换lib文件,直接在左侧工程窗口删除添加即可),不然会莫名报错(某明*发现的)

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
4.添加头文件及其魔术棒配置

#include "arm_math.h"

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
开启FPU,以及DSP库基本宏定义:

,__FPU_PRESENT=1,__TARGET_FPU_VFP,ARM_MATH_CM4,__CC_ARM
--diag_suppress=2803,1,1035

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
记得勾选Microlib,否则调用DSP库内函数一直返回0(原因不详)stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
然后将此处的lib切换成带FPU的lib文件(1.中提及)
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

5.测试

test= arm_sin_f32(3.1415926/6);

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

参考博客:

> https://blog.csdn.net/qq_34022877/article/details/117855263

二、KEIL内添加

(在网上诸多教程,发现实际情况与教程中的keil目录路径出入较大,难以复现,我也不明确这个方法对不对,但确实函数计算结果正常,麻烦大佬指正。)
本部分内容分为两块:1.创建自己的DSP文件夹;2.添加进工程。

1.创建自己的DSP文件夹。

Ⅰ.KEIL自带完整的源DSP库,存放于安装目录下,但stm32只需要用到部分文件即可,先建一个自己的DSP文件夹。(需添加如下两个文件)。
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

Ⅱ.进入KEIL安装目录,"\Keil_v5\ARM\Pack\ARM\CMSIS\4.2.0\CMSIS"中。stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

Ⅲ.将CMSIS\Include文件夹、CMSIS\Lib\ARM\arm_cortexM4lf_math.lib,复制到刚建的MDSP中。(一定是复制,别用拖拽,比如我写到一半再去复现发现inlcude文件夹消失)。stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
至此,DSP文件夹创建完成。

2.添加进工程。

Ⅰ.将MDSP文件夹放入你的工程,并添加其中include文件夹路径stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
Ⅱ.基本配置

添加宏定义、

,__FPU_PRESENT=1,__TARGET_FPU_VFP,ARM_MATH_CM4,__CC_ARM

微LIB库stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
工程管理窗口添加lib文件stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

Ⅲ.测试
引用头文件

#include "arm_math.h"

测试代码

test= arm_sin_f32(3.1415926/6)+1;

stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机

Debug结果stm32使用dsp,STM32学习,stm32,嵌入式硬件,单片机
参考博客:https://blog.csdn.net/physicsexpert/article/details/125836181文章来源地址https://www.toymoban.com/news/detail-601232.html

如有错误,劳请指正!

到了这里,关于【stm32开发笔记】基于HAL库的STM32F4添加DSP库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32F4系列】【HAL库】【自制库】WS2812(软件部分)(PWM+DMA)

    硬件介绍(PCB设计方案) 模拟时序发送 WS2812是一种异步串行通信,它每一位数据时间是ns级别的 默认是高电平状态 0码:220-380ns高电平+580-1600ns低电平 1码:580-1600ns高电平+220-380ns低电平 复位码:280us低电平 24Bit数据来代表GRB的亮度值 从高位到低位发送,分别按照G-R-B的顺序发送

    2024年02月15日
    浏览(59)
  • 【STM32F4系列】【HAL库】【模块介绍】MPU6050设置与DMP库使用

    MPU6050是一个3轴陀螺仪(测角加速度)和3轴加速度计(测量线加速度)的测量芯片 内部自带运算单元(DMP),可以输出经姿态融合计算后的 四元数 (一种表示旋转的方法) 而且MPU6050的价格较低(10r以下),常被用于精度不高的场合作为姿态感知的芯片 如经典项目平衡车,某年电赛题目风力摆

    2024年02月05日
    浏览(18)
  • STM32基于HAL库的开发与应用(2)GPIO口控制

    一、GPIO口是在单片机开发应用中使用最频繁的一个控制。GPIO口可作为输出高低电平也可以作为输入检测输入电平的高低。 (1)通常GPIO口输出控制LED灯、有源蜂鸣器等一些只需要高低电平就可以触发的模块。 (2)通常GPIO口作为输入,用来检测输入电平的高低状态,常用于

    2024年02月11日
    浏览(16)
  • MPU6050(读取原数据、移植DMP、stm32f4、HAL库、KEIL5)

    记录一下自己遇到的问题及解决方法,希望能帮助到一些人。 第一步,读取芯片的原始数据。需要注意两点:1、对HAL库提供的IIC读取写入函数进行再包装。(千万不要觉的这步多此一举,后面移植DMP时用得到) 2、芯片的地址(这里面有俩坑)第一就是,芯片的 I2C 设备地址

    2023年04月08日
    浏览(16)
  • [GD32F4]基于GD32固件库移植cherryusb[STM32F4]

    [GD32F4]基于GD32固件库移植cherryusb[STM32F4] 使用开发板是淘宝买的不知名开发板,没什么好说的,具体的型号是GD32F450VET6。 使用的cherryusb版本是0.9.0版本。 使用的GD32官方固件库版本是:GD32F4xx_Firmware_Library_V3.0.4 cherryusb最牛的地方在于抛弃掉所有的依赖,只需要知道芯片的usb中断

    2024年02月06日
    浏览(24)
  • 【STM32】STM32F411RET6(NUCLEO)开发板基于HAL库创建工程模板及屏幕驱动

    驱动单色0.96英寸七针OLED 显示屏 串口调试等功能 本文如题采用STM32F411RET6(NUCLEO)开发板如图所示。 开发环境使用MDK(keil5)和STM32CubeMX,不了解的同学可以去百度一下。 首先选择对应的开发板型号,然后进入图形化配置界面。 第一步是时钟配置,每个板子在不考虑功耗的情况下

    2024年02月09日
    浏览(17)
  • 基于STM32F4的心电监护仪

    从题目中可以看出该课题来源于 2020年省电赛A题的无线运动传感器节点的设计 ,该作品得过湖北省电赛二等奖,同时也是我本科毕业设计,这里我把自己做的关于心电部分的工作进行一次总结,也对我的大学四年进行一次总结。 处理器板子的选择 本研究的处理器模块选择

    2024年02月03日
    浏览(15)
  • 单片机:STM32F4x HAL库软硬SPI驱动ST7735s 1.8寸LCD屏幕

    说明:此篇为学习记录。可能存在错误或者不足。如有问题请指出。 主控芯片:STM32F411CEU6 主控开发板:WeAct STM32F411CEU6最小系统板 TFT-LCD屏幕:合宙1.8寸TFT-LCD,驱动为ST7735s MDK版本:5,32 HAL库版本:1.27.1 STM32CubeMX版本:6.7.0 ST7735s支持8080并口,3线和4线串行接口,模块的驱动方

    2024年02月03日
    浏览(23)
  • 【STM32F429】HAL库的PWM中断,精确控制脉冲数,控制步进电机

    这两天在调步进电机,希望是使得步进电机每次都达到期望的高度。在查了一天的资料,发现大部分上传的资料都是使用CubeMX生成的,可复制性很高,但未免有失可读性,故上传我的心得经验。 本来原子哥的例程里有整合度很高的,已经封装好的精确控制步进电机前进距离的

    2024年02月08日
    浏览(25)
  • 基于STM32F4的多摩川协议通讯

    1、介绍        之前项目刚好有用到禹衡家的17位绝对值编码器,趁着周末有时间整理一下开发思路,同时也分享出来给有需要的人做做参考。        说回编码器,我们都知道在伺服控制中,为了获取更高的位置精度,完成更精细的绝对定位,通常会采用绝对式光电编码

    2024年02月11日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包