本帖最后由 聚沃科技 于 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__
- 在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
|