1.Keil 環境下使用 FPU 的方法
GD現有的M4內核MCU 均支持FPU,以下例子以Keil 為環境參考,進行代碼修改和設置界面的配置(同理IAR的設置也是類似)。

1.在選項中找到上述的頁面,選擇使用use single precision。以下使用的是KEIL5的編譯器,其他版本的也是類似。

2.使用F3系列,需要加入兩條語句
在gd32f3xx.h中加入#define __FPU_PRESENT 1

在system_gd32f30x.c中的SystemInit()中加入
/ FPU settings / //如果庫中沒有這條語句,就需要加上
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif
如下圖所示

使用F4系列 在gd32f4xx.h中加入#define __FPU_PRESENT 1

- 打開魔法棒,在 C/C++ 選項卡處添加宏定義 __TARGET_FPU_VFP 使用 FPU 單元。

4.重新編譯下載燒錄即可。
5.檢查FPU是否打開。
a在jlink調試控制界面下,輸入語句
mem32 0XE000ED88 1
具體看下圖,得到為00F0 0000的值,證明FPU已經開啟。

b.在GD link的調試下
在進入仿真階段后,

點擊下方memory ,在address 中輸入0XE000ED88

出現上述圈中的詞證明FPU已經打開。
2. Embedded Builder 環境下使用 FPU 的方法
- 在gd32f4xx.h中加入#define __FPU_PRESENT 1的宏

- 在工程的 properties 里添加預編譯宏 __VFP_FP__

- 選擇浮點運算類型及VFP架構

- 在core_cm4.h文件中確認FPU使能

- 在system_gd32f4xx.c中的SystemInit()中加入下述語句。
/ FPU settings / //如果庫中沒有這條語句,就需要加上
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif

- 用 Jlink 檢查 FPU 是否打開的方法如前文所述,在此便不贅述。
-
單片機
+關注
關注
6068文章
45023瀏覽量
651440 -
Embedded
+關注
關注
0文章
50瀏覽量
23143 -
keil
+關注
關注
69文章
1223瀏覽量
169881 -
FPU
+關注
關注
0文章
45瀏覽量
22153 -
Jlink
+關注
關注
6文章
113瀏覽量
38680
發布評論請先 登錄
GD32 MCU 入門教程】GD32 MCU 常見外設介紹(12)FMC 模塊介紹

GD32的MCU介紹
兆易創新GD32 MCU選型手冊,適用于GD32全系列MCU
【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(1)使用Keil開發GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(2)使用 IAR 開發 GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(3)使用 Embedded Builder 開發 GD32

【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明(1)ISP 燒錄

【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(14)RTC 模塊介紹

【GD32 MCU入門教程】GD32 MCU GPIO 結構與使用注意事項

評論