中易网

求助,stm32f4的DSP库怎么使用

答案:1  悬赏:50  
解决时间 2021-01-04 03:26
求助,stm32f4的DSP库怎么使用
最佳答案
如何使用STM32F4的DSP库

我们平常所使用的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



#if (__FPU_PRESENT == 1)&& (__FPU_USED == 1)

SCB->CPACR |= ((3UL<< 10*2)|(3UL << 11*2));

#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 )。

注意一下例外函数,sqrt(),在arm_math.h中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED == 1) && defined ( __CC_ARM )才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
善地的意思是什么?善地的释义是什么啊?
我想和你唱的广告中一个女的在办公室唱的歌叫
几乘28=126
康缇地址在什么地方,我要处理点事
峻诋的意思是什么啊?请解释下!
卑鄙無耻的意思是什么?卑鄙無耻的释义是什么
台州江南布衣
乐视超级电视40个月VlP是啥意思
电脑鼠标总是向左 怎么解决
我现在的未婚妻忘不了她前男朋友怎么办啊!谁
離鴻的意思是什么?離鴻的释义是什么啊?
节矜的意思是什么啊?请解释下!
我是腐女,真的真的讨厌腐女么
一边上的中线等于该边一半的三角形是直角三角
java double类型
推荐资讯
是现在坚持,还是一拖再拖,我期待已久的婚纱
技术警察有那些?那些专业可以考技术警察?
招倈的意思是什么啊?请解释下!
外汇盘k线图24种经典图解会不会的骗人的
喜欢上一个不符合自己要求的人怎么办?
凉席的品牌哪个好
近捷的意思是什么?近捷的释义是什么啊?
平阳时,鸡鸣时,人定时,半夜时,黄昏时,中
怎么让win8用上wp8的软件
罗定市罗平中学学生尹幼群你在哪?
所有生物细胞的结构都是一样的______.(判断
现代或近代有哪些忠言逆耳的例子?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?