打印

【GD32 MCU入门教程】五、GD32 MCU FPU 使用方法

[复制链接]
1630|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 聚沃科技 于 2024-9-18 16:40 编辑

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 是否打开的方法如前文所述,在此便不赘述。

教程由GD32 MCU方案商聚沃科技原创发布,了解更多GD32 MCU教程,关注聚沃科技官网,GD32MCU技术交流群:859440462

使用特权

评论回复
沙发
tpgf| | 2024-9-2 17:03 | 只看该作者
在Keil编译器中,选择“use single precision”以启用单精度浮点运算

使用特权

评论回复
板凳
wowu| | 2024-9-13 23:58 | 只看该作者
GD32 MCU的FPU使用方法主要涉及在Keil和Embedded Builder环境下的配置,以及如何检查FPU是否已正确开启

使用特权

评论回复
地板
xiaoqizi| | 2024-9-14 22:11 | 只看该作者
确保目标设备的型号支持FPU,并在项目设置中使能FPU

使用特权

评论回复
5
磨砂| | 2024-9-23 21:01 | 只看该作者
system_gd32f30x.csystem_gd32f4xx.cSystemInit()函数中添加以下代码,以设置FPU的访问权限

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

9

粉丝