GD32目前支持ARM Cortex-M和RISC-V两种内核系列芯片,其中Cortex-M内核已经支持的有M3、M4、M23、M33、M7,这里面除了M3和M23以外,其他的都带FPU单元。我们知道,FPU在浮点运算速度上有很大的提升,并且只有带FPU才可以使用ARM的DSP库。
现在就以GD32F303为例来教大家在keil中如何打开GD32 FPU以及使用ARM DSP库的方法。
第一步:在keil-Options-Target中设置Floating Point Hardware为Single Precision(小编用的是Keil5,用Keil4的小伙伴这里应该选为Use FPU)

第二步:工程中定义 __TARGET_FPU_VFP

第三步:打开gd32f30x.h文件,设置 __FPU_PRESENT为1

做完以上三步,可以看到SystemInit函数中的SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));语句从无效变为有效了(实际上这句就是打开FPU单元)。


好了,我们来验证下FPU是不是被打开了,我们编译工程并下载到MCU中,在Memory窗口看下0xE000ED88地址的数,如果为0x00F00000,就说明FPU被正确打开了。

下面我们来介绍下如何使用ARM的DSP库,首先,我们需要两个文件:arm_cortexM4lf_math.lib 和arm_math.h,GD官方库是不带这两个文件的,小伙伴们可以自行网上下载或者联系我们提供哦。
第一步:将arm_cortexM4lf_math.lib 加入到工程中

第二步:工程中定义ARM_MATH_CM4

做好这两步后,就可以使用ARM DSP库了。调用的方法也很简单,在需要调用DSP库的文件中包含头文件:arm_math.h

然后就可以使用DSP库中的函数了,比如arm_sin_f32函数,下面分别用math标准库函数和ARM DSP math库来计算sin(π/6),小伙伴们可以自行测试运算速度差别哦。

关键字:Keil GD32 FPU ARM DSP库
引用地址:
如何使用Keil打开GD32 FPU及使用ARM DSP库 ?
推荐阅读最新更新时间:2026-03-25 08:36
keil(MDK-ARM)的调试使用
现在软件的模拟功能都是非常强大,但是有时候会用不好。 原文地址: 那就看这里吧:http://www.cnblogs.com/strongerHuang/p/5596355.html 1.编译+调试 打开软件工程 - 编译 - 调试 这里的编译建议使用Build Target(第2个按钮)编译工程(如下图动画),也就是使用快捷键F7。Translate(第1个按钮)是编译当前活动文件。Rebuild all Target files(第3个按钮)是重新编译所有目标文件。 在线调试分类:软件在线调试和硬件在线调试;由于现在硬件成本比较便宜,一般我们都使用硬件在线调试,也就是软件直接下载到芯片,我们查看运行状态。 2.复位+全
[单片机]
Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)
Ⅱ、本文要点 本文主要讲述的是目标选项的配置,但为了让更多人明白什么是目标选项,首先将简述工作空间、工程、目标的意思和区别。 1.打开目标选项的两种方法 1.点击目标选项快捷按钮,如下图: 2.从菜单中打开,Project - Options for Target,如下图: 2.本文所讲述的目标选项 由于目标选项里面内容较多,本文只讲述前五项,后五项在下一篇文章讲述。本文旨在让大部分人明白目标选项的配置,为了使文章内容精简,过于简单和不常用过于复杂的只简述。 Ⅲ、简述工作空间、工程、目标 本章节内容与主题关系不大,若你掌握了,可以绕过。主要为了使更多的人明白这几个词的意思。本节内容这种复杂的结构,对于初学者基本
[单片机]
Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程
Ⅰ、写在前面 本文使用目前(2016年11月)最新版本Keil(MDK-ARM)V5.21a开发环境、以STM32的处理器为例给大家讲述新建一个软件工程的详细过程。 Keil(MDK-ARM)V4和V5新建软件工程基本一样,本文也适合与V4版本的新建软件工程。 本文使用的处理器是ST公司的STM32F1系列芯片,ST公司其它系列(如:F4等)、其它公司(如:TI)新建软件工程的过程也是一样。 为方便广大STM32学习者,我将在下面把STM32F0 - F4各个系列芯片新建好的Demo软件工程、相关的工具和文档提供给大家下载。 本文内容已经整理成PDF文件,提供给大家下载: http://pan.baidu.co
[单片机]
解决STM32在MDK-ARM(KEIL)编译时出现 已停止工作
若是关闭对话框还可继续编译,只是到最后linking时显示一个error,提示 ..OBJXXX.axf: error: L6002U: Could not open file ..objXXX.o: No such file or directory ..OBJtest.axf - 1 Error(s), 0 Warning(s). 从网上查到很多相同问题,但是回答者都是简简单单说几句是什么原因就走了...这就是大神的通病吧,忙活自己的事去了... 解决: 1、右键我的电脑-管理-本地用户和组-用户 把里面你的中文用户名改成英文。 2、右键我的电脑-属性 右下-计算机名称、域和工作组设置-更改设置 改成
[单片机]
使KEIL中同时具有51和ARM的编译功能
分别安装51和ARM的KEIL,他们在不同的文件夹,为的是提取C51文件夹。那么问题来了,是不是可以把他们安装在同一个文件夹下,理论上行得通,没试过。 其实很简单的,下面介绍步骤: 一、先将KEIL C51安装目录下的名字为C51文件夹,放到KEIL ARM安装目录的keil文件夹下。 二、打开TOOLS.INI的这个文件,将文件中加点东西。 在ARM下加入51功能,把KEIL C51下TOOLS.INI中 及其下面的内容复制下来 ORGANIZATION= 微软中国 NAME= 微软用户 , dsf EMAIL= sad BOOK0=UV4RELEASE_NOTES.HTM( uVision Release Notes
[单片机]
采用Keil4为ARM7 (LPC2103)创建工程 及J-link调试
采用Keil4为ARM7创建工程,采用J-LINK调试,具体步骤如下: 在菜单里的Project里选择New uVision project...,选择正确的路径并命名保存; 在弹出来的对话框中选择CPU,NXP(founded by philips)- LPC2103; 在弹出的对话框按“yes”复制LPC2100启动文件到工程; 在Project里面选择Option for Target'Target 1'...,Target里面的IROM1要配置正确(0x0 0x8000),一般采用默认值就可以了;Output选择里面的Name of Executable的命名不能用点号;Debug里面的选择
[单片机]
关于KEIL MDK调试ARM程序不能仿真的问题
在单片机程序调试过程中,由于程序量小,利用仿真器进行仿真调试方便直观,所以一般经常使用。但是keil经常会出现罢工,无法用仿真器调试的现象,如下图: 解决方法也很简单,按照下图设置即可:
[单片机]
mini2440----keil for ARM下的调试与下载环境的搭建
题外话:编译环境选择推荐 对于刚刚接触ARM裸机编程的各位,我要特别的进行提醒一下,就是关于编译环境的选择问题。目前主流的有ADS+AXD,KEIL FOR ARM,IAR FOR ARM三种,我开始使用的ADS+AXD进行学习,因为光盘里面自带,而且很多资料都是他的,但是个人感觉真心调试十分的不方便,而且各种容易死机,并且现在也已经不更新了,北航一本讲嵌入式的书出了一个第二版,就是把ADS换成了KEIL,而且以后KEIL会是主流,因此我推荐选择KEIL进行学习。IAR听我一个同学说也十分好用,但是在网上找有关方面的资料不是很多。而且我想北航一群教授编书都用KEIL进行,说明KEIL自有他的优势,书上这么说了,那以后会有更多学生用
[单片机]