MSP432 FPU与DSP测试
目錄
- 前言
- 一、開啟FPU
- 二、使用DSP指令集
- 1.移植
- 2.測試
- 總結
前言
本文基于MSP432P401R,總所周知MSP432基于Cortex-M4內核,Cortex-M4內核相比于M3而言多了FPU(浮點運算單元)并支持DSP指令集,FPU配合DSP指令使得單片機浮點運算時間大大縮短。官方給出的數據是有近10倍的縮短。TI官方給只給出的FPU的例程,沒有給出DSP例程,而且FPU例程描述的不清晰。下文將介紹如何開啟FPU和移植DSP庫并進行測試。
以下是本篇文章的正文內容
一、開啟FPU
MSP432是ARM內核,自然就支持MDK了。個人習慣使用MDK,也推薦MSP432使用MDK開發。
開啟FPU之前先查看當前設備是否支持FPU,進入MDK調試界面,右下角查看地址0xE000ED88 數據, 如果為0x00F00000 00000000 00000800, 則說明設備支持 FPU。
在MDK編譯器就可以開啟FPU。
如圖點擊魔術棒后點擊Target,在Floating Point Hardware選項框中選擇Single Precision。不同版本的選項名稱可能不同,只要不是Not Used就行了。
二、使用DSP指令集
1.移植
開啟FPU后可以提升浮點運算的速度,但是一些數學運算還需要配合DSP指令。
在魔術棒C++ define中添加如下定義
添加頭文件
#include <arm_math.h>添加完這個頭文件編譯后會報一推錯誤,主要是缺少相關文件。
在MDK安裝目錄下ARM\PACK\ARM\CMSIS\5.8.0\CMSIS\DSP\Include下找到下列文件,不同版本的安裝目錄有所不同,可以直接使用搜素功能搜素文件名字。整個include文件夾都需要包含進工程。
include中DSP文件夾的文件也需要包含。
如果使用sin、cos等數學函數需要添加對應源文件和頭文件,如arm_sin_f32.c 和arm_cos_f32.c。 建議直接添加arm_cortexM4lf_math.lib庫文件,里面包含所有數學函數。該庫文件在 Keil\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions可以找到。
進行完上述操作后就可以愉快使用DSP指令集了,如果找不到相關文件,在文章下方有上傳的工程模板。
2.測試
for(i=0;i<20000;i++) {c = (arm_sin_f32(50.5) * (12.2f / 50.1f) * 10.22f / 3) * i;//c = (sin(50.5) * (12.2f / 50.1f) * 10.22f / 3) * i;}在while循環中進行多次浮點運算,對比使用DSP指令和普通數學指令的時間就可以了。或者直接翻轉LED,可以明顯看到使用DSP庫后LED的翻轉頻率加快。同時開啟FPU下,使用DSP速度提升約20%。注意在開啟FPU后不管用不用DSP指令浮點運算時間都會縮短。
總結
那么以上就是本篇文章的所有內容了。工程文件已上傳,
MSP432_FPU_DSP_Test.rar
總結
以上是生活随笔為你收集整理的MSP432 FPU与DSP测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab求解零输入响应,基于matl
- 下一篇: 多边形裁剪(Polygon Clippi