1.Keil 環(huán)境下使用 FPU 的方法
GD現(xiàn)有的M4內(nèi)核MCU 均支持FPU,以下例子以Keil 為環(huán)境參考,進(jìn)行代碼修改和設(shè)置界面的配置(同理IAR的設(shè)置也是類似)。
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-OAMGBGAABk46utPjQ254.png)
1.在選項(xiàng)中找到上述的頁(yè)面,選擇使用use single precision。以下使用的是KEIL5的編譯器,其他版本的也是類似。
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-OAMGBGAABk46utPjQ254.png)
2.使用F3系列,需要加入兩條語(yǔ)句
在gd32f3xx.h中加入#define __FPU_PRESENT 1
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-SAU_spAAGIGC-wl4o341.png)
在system_gd32f30x.c中的SystemInit()中加入
/ FPU settings / //如果庫(kù)中沒(méi)有這條語(yǔ)句,就需要加上
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif
如下圖所示
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-OAGXrAAAEZb9Q-qSE318.png)
使用F4系列 在gd32f4xx.h中加入#define __FPU_PRESENT 1
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-SAILb9AAIemLcYClk622.png)
- 打開(kāi)魔法棒,在 C/C++ 選項(xiàng)卡處添加宏定義 __TARGET_FPU_VFP 使用 FPU 單元。
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SAb426AAFULfbZzI0575.png)
4.重新編譯下載燒錄即可。
5.檢查FPU是否打開(kāi)。
a在jlink調(diào)試控制界面下,輸入語(yǔ)句
mem32 0XE000ED88 1
具體看下圖,得到為00F0 0000的值,證明FPU已經(jīng)開(kāi)啟。
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SAHvbEAAA23YI1Yxc734.png)
b.在GD link的調(diào)試下
在進(jìn)入仿真階段后,
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SABKgpAAJyzvRLePA494.png)
點(diǎn)擊下方memory ,在address 中輸入0XE000ED88
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-SAS_3xAAD1lr5_lSc727.png)
出現(xiàn)上述圈中的詞證明FPU已經(jīng)打開(kāi)。
2. Embedded Builder 環(huán)境下使用 FPU 的方法
- 在gd32f4xx.h中加入#define __FPU_PRESENT 1的宏
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SAcslMAAA1wk_qzKA113.png)
- 在工程的 properties 里添加預(yù)編譯宏 __VFP_FP__
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-SAAe-jAAFiKGXCIGk310.png)
- 選擇浮點(diǎn)運(yùn)算類型及VFP架構(gòu)
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SAPE50AAGRNaT8Y28248.png)
- 在core_cm4.h文件中確認(rèn)FPU使能
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/05/0B/wKgaombKh-SAA5I-AAAn-2XeWRg321.png)
- 在system_gd32f4xx.c中的SystemInit()中加入下述語(yǔ)句。
/ FPU settings / //如果庫(kù)中沒(méi)有這條語(yǔ)句,就需要加上
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif
![輸入圖片說(shuō)明](https://file1.elecfans.com/web2/M00/04/1F/wKgZombKh-SAIuuxAAAZFL2CvqA299.png)
- 用 Jlink 檢查 FPU 是否打開(kāi)的方法如前文所述,在此便不贅述。
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635235 -
Embedded
+關(guān)注
關(guān)注
0文章
43瀏覽量
22226 -
keil
+關(guān)注
關(guān)注
68文章
1213瀏覽量
166875 -
FPU
+關(guān)注
關(guān)注
0文章
42瀏覽量
21316 -
Jlink
+關(guān)注
關(guān)注
6文章
111瀏覽量
37694
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
GD32 MCU 入門教程】GD32 MCU 常見(jiàn)外設(shè)介紹(12)FMC 模塊介紹
![<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常見(jiàn)外設(shè)介紹(12)FMC 模塊介紹](https://file1.elecfans.com/web2/M00/04/87/wKgaombFSS2AWG-GAAB5lPnhR3c604.png)
《GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》+讀后感
兆易創(chuàng)新GD32 MCU選型手冊(cè),適用于GD32全系列MCU
不同型號(hào)的GD32 MCU如何區(qū)分?
![不同型號(hào)的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何區(qū)分?](https://file1.elecfans.com/web2/M00/BE/A2/wKgZomW0XRKAe4O1AAAoMKUJ9lg082.png)
【GD32 MCU 入門教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(1)使用Keil開(kāi)發(fā)GD32
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 開(kāi)發(fā)環(huán)境搭建(1)使用Keil開(kāi)發(fā)<b class='flag-5'>GD32</b>](https://file1.elecfans.com/web2/M00/02/32/wKgaoma0bSqAZmYJAABWzE6EVjY883.png)
【GD32 MCU 入門教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(2)使用 IAR 開(kāi)發(fā) GD32
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 開(kāi)發(fā)環(huán)境搭建(2)使用 IAR 開(kāi)發(fā) <b class='flag-5'>GD32</b>](https://file1.elecfans.com/web2/M00/01/49/wKgZoma0doSAZgTbAABV8x9Lb_4326.png)
【GD32 MCU 入門教程】一、GD32 MCU 開(kāi)發(fā)環(huán)境搭建(3)使用 Embedded Builder 開(kāi)發(fā) GD32
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】一、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 開(kāi)發(fā)環(huán)境搭建(3)使用 Embedded Builder 開(kāi)發(fā) <b class='flag-5'>GD32</b>](https://file1.elecfans.com/web2/M00/02/37/wKgaoma0e3mANRvBAAAxO0zTl60782.png)
【GD32 MCU 入門教程】二、GD32 MCU 燒錄說(shuō)明(1)ISP 燒錄
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】二、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 燒錄說(shuō)明(1)ISP 燒錄](https://file1.elecfans.com/web2/M00/02/38/wKgaoma0f8SAB_h5AAAvpALfiNs789.png)
【GD32 MCU 入門教程】二、GD32 MCU 燒錄說(shuō)明(3)脫機(jī)燒錄
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】二、<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 燒錄說(shuō)明(3)脫機(jī)燒錄](https://file1.elecfans.com/web2/M00/01/52/wKgZoma0k4mAPeLWAADZE2JooiI020.png)
【GD32 MCU 入門教程】GD32 MCU 常見(jiàn)外設(shè)介紹(14)RTC 模塊介紹
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>入門教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常見(jiàn)外設(shè)介紹(14)RTC 模塊介紹](https://file1.elecfans.com/web2/M00/03/E0/wKgZombH42WAIyq2AAA3DFzN548758.png)
【GD32 MCU入門教程】GD32 MCU GPIO 結(jié)構(gòu)與使用注意事項(xiàng)
![【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b><b class='flag-5'>入門教程</b>】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> GPIO 結(jié)構(gòu)與使用注意事項(xiàng)](https://file1.elecfans.com/web2/M00/06/89/wKgaombbu8qAXdJKAAAW--yDqzA279.png)
評(píng)論