GD32目前支持ARM Cortex-M和RISC-V兩種內(nèi)核系列芯片,其中Cortex-M內(nèi)核已經(jīng)支持的有M3、M4、M23、M33、M7,這里面除了M3和M23以外,其他的都帶FPU單元。我們知道,F(xiàn)PU在浮點(diǎn)運(yùn)算速度上有很大的提升,并且只有帶FPU才可以使用ARM的DSP庫(kù)。
現(xiàn)在就以GD32F303為例來(lái)教大家在keil中如何打開(kāi)GD32 FPU以及使用ARM DSP庫(kù)的方法。
第一步:在keil-Options-Target中設(shè)置Floating Point Hardware為Single Precision(小編用的是Keil5,用Keil4的小伙伴這里應(yīng)該選為Use FPU)

第二步:工程中定義 __TARGET_FPU_VFP

第三步:打開(kāi)gd32f30x.h文件,設(shè)置 __FPU_PRESENT為1

做完以上三步,可以看到SystemInit函數(shù)中的SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));語(yǔ)句從無(wú)效變?yōu)橛行Я耍▽?shí)際上這句就是打開(kāi)FPU單元)。


好了,我們來(lái)驗(yàn)證下FPU是不是被打開(kāi)了,我們編譯工程并下載到MCU中,在Memory窗口看下0xE000ED88地址的數(shù),如果為0x00F00000,就說(shuō)明FPU被正確打開(kāi)了。

下面我們來(lái)介紹下如何使用ARM的DSP庫(kù),首先,我們需要兩個(gè)文件:arm_cortexM4lf_math.lib 和arm_math.h,GD官方庫(kù)是不帶這兩個(gè)文件的,小伙伴們可以自行網(wǎng)上下載或者聯(lián)系我們提供哦。
第一步:將arm_cortexM4lf_math.lib 加入到工程中

第二步:工程中定義ARM_MATH_CM4

做好這兩步后,就可以使用ARM DSP庫(kù)了。調(diào)用的方法也很簡(jiǎn)單,在需要調(diào)用DSP庫(kù)的文件中包含頭文件:arm_math.h

然后就可以使用DSP庫(kù)中的函數(shù)了,比如arm_sin_f32函數(shù),下面分別用math標(biāo)準(zhǔn)庫(kù)函數(shù)和ARM DSP math庫(kù)來(lái)計(jì)算sin(π/6),小伙伴們可以自行測(cè)試運(yùn)算速度差別哦。

好了,今天的內(nèi)容就這些,如果還沒(méi)有學(xué)廢,那就評(píng)論區(qū)聊聊吧~記得點(diǎn)贊收藏加關(guān)注
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44976瀏覽量
650235 -
ARM
+關(guān)注
關(guān)注
134文章
9349瀏覽量
377311 -
keil
+關(guān)注
關(guān)注
69文章
1223瀏覽量
169552 -
GD32
+關(guān)注
關(guān)注
7文章
421瀏覽量
25468
發(fā)布評(píng)論請(qǐng)先 登錄

如何使用Keil打開(kāi)GD32 FPU及使用ARM DSP庫(kù)?#GD32 #KEIL #單片機(jī) #嵌入式
什么是GD32
GD32芯片包添加步驟有哪些
請(qǐng)問(wèn)GD32啟動(dòng)文件使用的ARM匯編指令有哪些呢
GD32系列總結(jié)
學(xué)習(xí)一下GD32官方庫(kù)的使用
GD32單片機(jī)開(kāi)發(fā)環(huán)境搭建(Keil5安裝)

GD32F系列單片機(jī)開(kāi)發(fā)總結(jié)(二):GD32芯片包添加步驟

GD32和AT32哪個(gè)好?
GD32與STM32兼容嗎?
hc32和gd32的區(qū)別
KEIL5如何打開(kāi)KEIL4的GD工程

【GD32 MCU 入門教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(1)使用Keil開(kāi)發(fā)GD32

評(píng)論