问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用STM32F4的DSP库

发布网友 发布时间:2022-04-22 12:26

我来回答

1个回答

热心网友 时间:2023-05-18 08:08

我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如1.1+1.1的
浮点数
运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。
现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有
STM32F4
系列的带有DSP功能的
微控制器
。前者笔者没有用过,不作评论,而后者如果需要用到FPU的
浮点运算
功能,必须要进行一些必要的设置。
首先,由于浮点运算在FPU中进行,所以首先应该
使能
FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED
/*
FPU
settings
------
------------------------------------------------------*/
#if
(__FPU_PRESENT
==
1)&&
(__FPU_USED
==
1)
SCB->CPACR
|=
((3UL<<
10*2)|(3UL
<<
11*2));
/*set
CP10
and
CP11
Full
Access
*/
#endif
这样就使能了FPU。
对于上述改变,当程序中出现这种简单的
加减乘除运算
FPU就起作用了。但是对于复杂的如三角运算、
开方
运算等,我们就需要加入math.h
头文件
。但是如果单纯的加入他,那么Keil会自动调用内部的math.h,该头文件是针对
ARM处理器
的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将math.h换成ST的库,即arm_math.h。在该头文件中,涉及到另一个文件core_cmx.h(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4.h即可。
到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用
三角函数
如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于math.h,所以你调用的仍旧是Keil库中的标准math.h。要使用arm_math.h中的arm_sin_f32()函数(见Line.5780,
原函数
见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是
三次样条插值法
快速
求值
(见Line.263
/*
Cubic
interpolation
process
*/)。
注意一下例外函数,sqrt(),在arm_math.h中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED
==
1)
&&
defined
(
__CC_ARM
)才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方,大家如果对这个数很陌生,查阅
http://en.wikipedia.org/wiki/Fast_inverse_square_root
。不过他的处理可能有些不同。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中控是什么意思 抖音直播中控是什么意思 iphone通讯录群组设置 如何更改iphone通讯录拨打电话时总是出现两个称呼 我的电脑是Win8.1update老硬盘有坏道,最近新买了一个硬盘是希捷的1TB混 ... 使命召唤:黑色行动2常见问题 GMA 4500M技术特性 电脑显示器的配置电脑的基本配置有哪些 梦见对象把门钥匙和我分手 梦见对象还我门钥匙要和我分手的预兆 公益性捐赠税前扣除资格 圆白菜煮熟后还有维C么? 快要2017年了,天猫还能转让吗??? 404 Not Found 天猫为什么举办2017天猫双十一晚会? STM32 G4系列 可以支持DFU下载程序么? 熟的胡萝卜含有维c吗 我用的是STM32F4DISCOVERY的板子,ST-LINK Utility是2.4版本的,但是用keil下载不了程序。 2017年天猫双十一预测成交额是多少 蔬菜生吃比熟吃时维c的损失小,原因是 为何天猫会举办2017双11晚会? 关于stm32 dfu bootloader的问题 怎样烹调蔬菜才不会使维生素C损失 天猫双十一狂欢夜2017的交易记录有多少? STM32F303CBT6怎么进入DFU模式? 吃煮熟的青菜能补充大量的维生素C吗? 2017《天猫》双十一狂欢夜举办地址及活动内容介绍 为什么青菜用开水煮过后放在缸中就会变酸?可以吃吗? 2017天猫双11报名规则有哪些 蔬菜烧熟后还维生素C还存在吗? 2017天猫双十一有哪些优惠活动 什么蔬菜中含有维生素C? stm32 STM Device in DFU Mode 驱动安装不上怎么办 2017天猫销售额不达标是什么情况?又有什么后果 stm32f4中有5个最重要的时钟源,分别是哪5个 2017天猫购物津贴每满400减50怎么使用?可以和店铺优惠券同时使用吗 如何使用STM32F4的BootLoader和APP程序 2017天猫双十一有哪些活动 stm32f103支持dfu吗 ifashion 2017年淘宝天猫全年营销活动主题有哪些 STM32F4系列加密处理器(CRYP)的疑问??? STM32F407哪一年发布 stm32f4怎么烧录? stm32f4和stm32f1驱动可以共用吗 别看他的衣服烂他腰里揣着八百万,是什么歌 歌词 从小被折磨 啥事都经过 是什么歌 别看他的衣服烂他腰里揣着八百万,是什么歌 陕西民歌别看咱衣服穿的乱腰里别着八百万是啥歌曲 歌词“从哪里飘过,从哪里经过,如今都变了颜色”,请问各位亲,这是什么歌曲的词!! 找一陕西方言歌曲,从小卖蒸馍 求歌曲 歌曲