====>>> 文章匯總(有代碼匯總) <<<====
1. 浮點(diǎn)運(yùn)算單元(FPU)
針對M4往上內(nèi)核的芯片都具有FPU浮點(diǎn)運(yùn)算單元??梢约涌旄↑c(diǎn)數(shù)的運(yùn)算速度。
1.1 所用硬件
硬件:STM32F401CCU6系統(tǒng)板(淘寶十幾塊錢一個(gè)系統(tǒng)板)。
軟件:CubeMX、Keil(5.38,建議使用新版本的,對于宏定義沒有的部分會(huì)有灰色提示)。
1.2 配置FPU
首先打開system_stm32f4xx.c
可以看到,在系統(tǒng)初始化函數(shù)中,需要有
- __FPU_PRESENT == 1
- __FPU_USED ==1
需要有這兩個(gè)定義才可以配置。
而在這個(gè)文件中引用了頭文件:stm32f4xx.h
在stm32f4xx.h
中引用了stm32f401xc.h
在stm32f401xc.h
中已經(jīng)對 __FPU_PRESENT == 1 定義過了。
然后就差 __FPU_USED ==1 了。
打開core_cm4.h
,可以看到,默認(rèn) __FPU_USED 是為0的。
顯然,這里是因?yàn)闆]有定義 __TARGET_FPU_VFP,所以下面的沒有打開。
因此,定義上就可以了。點(diǎn)擊魔術(shù)棒,添加上如下定義:,__TARGET_FPU_VFP
。(注意:是有個(gè)逗號和前面分開的)。然后點(diǎn)OK。
如果有的是因?yàn)?__CC_ARM 沒有定義的話, 那就也添加上去就好了。
然后再次看就發(fā)現(xiàn),__FPU_PRESENT == 1前面不是已經(jīng)有了嗎,為什么這里還是灰色的。
那是因?yàn)樵谶@個(gè)文件中并沒有包含定義__FPU_PRESENT的文件。
解決方法1(修改文件的方法都不建議):在這個(gè)文件中引用 定義有__FPU_PRESENT的文件。如下圖。
解決方法2:把__FPU_PRESENT=1U
在這里再添加一次。
注意是1U 不是1,如果寫成1,就和stm32f401cx.h
中定義的不一樣,會(huì)報(bào)很多重定義警告。
此時(shí)再看。浮點(diǎn)運(yùn)算就配置好了。
最后,勾選上使用單精度硬件浮點(diǎn)運(yùn)算即可。
2. CMSIS-DSP
2.1 添加DSP庫
兩種方法
第一種:直接下載源碼,放到工程文件夾,并且添加頭文件路徑。
第二種:CubeMX添加。
這里用第二種(多方便)
在生成工程頁面選擇。
勾選上之后點(diǎn)擊OK。
勾選上之后,生成工程。
打開工程可以看到,已經(jīng)添加好了。
此時(shí),在main.c文件中,添加#include “arm_math.h”,然后編譯會(huì)報(bào)錯(cuò)。
這是因?yàn)樵?code>arm_math.h中會(huì)根據(jù)內(nèi)核類型引用不同的文件。因此這里需要定義內(nèi)核。
解決:根據(jù)自己的內(nèi)核添加即可。這里是M4的。
此時(shí)再次編譯,就沒有報(bào)錯(cuò)了。
2.2 測試
在主函數(shù)中添加代碼,在調(diào)試窗口可以看到.F32。
可以在官網(wǎng)看到所有的函數(shù)及解釋說明文章來源:http://www.zghlxwxcb.cn/news/detail-609917.html
====>官網(wǎng)地址<====文章來源地址http://www.zghlxwxcb.cn/news/detail-609917.html
到了這里,關(guān)于STM32浮點(diǎn)運(yùn)算單元(FPU)和DSP庫使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!