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文章
45032浏览量
652106 -
Embedded
+关注
关注
0文章
50浏览量
23161 -
keil
+关注
关注
69文章
1223浏览量
169972 -
FPU
+关注
关注
0文章
45浏览量
22171 -
Jlink
+关注
关注
6文章
113浏览量
38704
发布评论请先 登录
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 结构与使用注意事项

评论