如何使用Keil打开GD32 FPU及使用ARM DSP库

[复制链接]
2995|1
 楼主| 聚沃科技 发表于 2024-6-15 14:59 | 显示全部楼层 |阅读模式
GD32目前支持ARM Cortex-MRISC-V两种内核系列芯片,其中Cortex-M内核已经支持的有M3M4M23M33M7,这里面除了M3M23以外,其他的都带FPU单元。我们知道,FPU在浮点运算速度上有很大的提升,并且只有带FPU才可以使用ARMDSP库。
现在就以GD32F303为例来教大家在keil中如何打开GD32 FPU以及使用ARM DSP库的方法。
第一步:在keil-Options-Target中设置Floating Point HardwareSingle Precision(小编用的是Keil5,用Keil4的小伙伴这里应该选为Use FPU
图片1.png
第二步:工程中定义 __TARGET_FPU_VFP
图片2.png
第三步:打开gd32f30x.h文件,设置 __FPU_PRESENT1
图片3.png
做完以上三步,可以看到SystemInit函数中的SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));语句从无效变为有效了(实际上这句就是打开FPU单元)。
图片4.png
好了,我们来验证下FPU是不是被打开了,我们编译工程并下载到MCU中,在Memory窗口看下0xE000ED88地址的数,如果为0x00F00000,就说明FPU被正确打开了。
图片5.png
下面我们来介绍下如何使用ARMDSP库,首先,我们需要两个文件:arm_cortexM4lf_math.lib arm_math.hGD官方库是不带这两个文件的,小伙伴们可以自行网上下载或者联系我们提供哦。
第一步:将arm_cortexM4lf_math.lib 加入到工程中
图片6.png
第二步:工程中定义ARM_MATH_CM4
图片7.png
做好这两步后,就可以使用ARM DSP库了。调用的方法也很简单,在需要调用DSP库的文件中包含头文件:arm_math.h
图片8.png
然后就可以使用DSP库中的函数了,比如arm_sin_f32函数,下面分别用math标准库函数和ARM DSP math库来计算sinπ/6),小伙伴们可以自行测试运算速度差别哦。
图片9.png

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

FranklinUNK 发表于 2024-6-20 17:44 | 显示全部楼层
这个宏定义直接写在程序文件里行不
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

190

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部