Kinetis(K系列)屬于Cortex-M4F構(gòu)架,自帶ARM CMSIS中的DSP函數(shù)庫(kù), 一部分K系列中帶有硬件浮點(diǎn)運(yùn)算單元(型號(hào)中帶有"F"的),支持浮點(diǎn)指令集,因此在處理數(shù)學(xué)運(yùn)算時(shí)能比M0/M3高出數(shù)十倍甚至上百倍的性能,但是要充分發(fā)揮FPU的數(shù)學(xué)性能,除了#include “arm_math.h”(而非用編譯器自帶的math.h)以外,(arm_math.h位于\Libraries\CMSIS\Include文件夾)還需要進(jìn)行設(shè)置。
1、在工程中添加庫(kù)
根據(jù)使用的器件和運(yùn)算模式,添加arm_cortexMxx_math.lib到工程文件中,位于\Libraries\CMSIS\Lib\ARM中。
* The library installer contains prebuilt versions of the libraries in the <code>Lib</code> folder.
* - arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)
* - arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)
* - arm_cortexM4l_math.lib (Little endian on Cortex-M4)
* - arm_cortexM4b_math.lib (Big endian on Cortex-M4)
* - arm_cortexM3l_math.lib (Little endian on Cortex-M3)
* - arm_cortexM3b_math.lib (Big endian on Cortex-M3)
* - arm_cortexM0l_math.lib (Little endian on Cortex-M0)
* - arm_cortexM0b_math.lib (Big endian on Cortex-M3)

我的 IDE是 Keil5.11. 使用的是 MK60DN512ZVL10 無(wú)FPU, 選用超核固件庫(kù),小端模式,所以選arm_cortexM4l_math.lib
2、ARM DSP庫(kù)工程結(jié)構(gòu)
下圖所示為DSP_Lib的文件結(jié)構(gòu) 3、函數(shù)庫(kù)基本功能
BasicMathFunctions
提供浮點(diǎn)數(shù)的各種基本運(yùn)算函數(shù),如加減乘除等運(yùn)算。對(duì)于M0/M3只能用Q運(yùn)算,即文件夾下以_q7、_q15和_q31結(jié)尾的文件;而M4F能直接硬件浮點(diǎn)計(jì)算,屬于文件夾下以_f32結(jié)尾的文件。
CommonTables
arm_common_tables.c文件提供位翻轉(zhuǎn)或相關(guān)參數(shù)表。
ComplexMathFunctions
復(fù)述數(shù)學(xué)功能,如向量處理,求模運(yùn)算的。
ControllerFunctions
控制功能,主要為PID控制函數(shù)。arm_sin_cos_f32/-q31.c函數(shù)提供360點(diǎn)正余弦函數(shù)表和任意角度的正余弦函數(shù)值計(jì)算功能。
FastMathFunctions
快速數(shù)學(xué)功能函數(shù),提供256點(diǎn)正余弦函數(shù)表和任意任意角度的正余弦函數(shù)值計(jì)算功能,和Q值開(kāi)平方運(yùn)算:
Arm_cos_f32/_q15/_q31.c:提供256點(diǎn)余弦函數(shù)表和任意角度余弦值計(jì)算功能。
Arm_sin_f32/_q15/_q31.c:提供256點(diǎn)正弦函數(shù)表和任意角度正弦值計(jì)算功能。
Arm_sqrt_q15/q31.c:提供迭代法計(jì)算平方根的函數(shù)。對(duì)于M4F的平方根運(yùn)算,通過(guò)執(zhí)行VSQRT指令完成。
FilteringFunctions
濾波函數(shù)功能,主要為FIR和LMS(最小均方根)濾波函數(shù)。
MatrixFunctions
矩陣處理函數(shù)。
StatisticsFunctions
統(tǒng)計(jì)功能函數(shù),如求平均值、計(jì)算RMS、計(jì)算方差/標(biāo)準(zhǔn)差等。
SupportFunctions
支持功能函數(shù),如數(shù)據(jù)拷貝,Q格式和浮點(diǎn)格式相互轉(zhuǎn)換,Q任意格式相互轉(zhuǎn)換。
TransformFunctions
變換功能。包括復(fù)數(shù)FFT(CFFT)/復(fù)數(shù)FFT逆運(yùn)算(CIFFT)、實(shí)數(shù)FFT(RFFT)/實(shí)數(shù)FFT逆運(yùn)算(RIFFT)、和DCT(離散余弦變換)和配套的初始化函數(shù)。
4、牛刀小試
如下圖,添加好DSP庫(kù)后,立馬試驗(yàn)了一個(gè)開(kāi)根號(hào)的小函數(shù),用串口終端輸出,精度還不錯(cuò) 哈哈。這些在高校搞科研的同學(xué)們有的玩啦.~~ 論文里可以大把大把的特書(shū)大書(shū)啦 哈哈

|