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 是否打開的方法如前文所述,在此便不贅述。
-
單片機
+關注
關注
6043文章
44622瀏覽量
638518 -
Embedded
+關注
關注
0文章
44瀏覽量
22265 -
keil
+關注
關注
69文章
1214瀏覽量
167271 -
FPU
+關注
關注
0文章
42瀏覽量
21374 -
Jlink
+關注
關注
6文章
111瀏覽量
37796
發布評論請先 登錄
相關推薦
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 結構與使用注意事項

評論