
<p>GD32目前支持ARM Cortex-M和RISC-V两种内核系列芯片,其中Cortex-M内核已经支持的有M3、M4、M23、M33、M7,这里面除了M3和M23以外,其他的都带FPU单元。我们知道,FPU在浮点运算速度上有很大的提升,并且只有带FPU才可以使用ARM的DSP库。<p><br/><p>现在就以GD32F303为例来教大家在keil中如何打开GD32 FPU以及使用ARM DSP库的方法。<p><br/><p>第一步:在keil-Options-Target中设置Floating Point Hardware为Single Precision(小编用的是Keil5,用Keil4的小伙伴这里应该选为Use FPU)<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgaomWh6dyAObq2AAGNfkmnj2w223.png"/><p><br/><p>第二步:工程中定义 __TARGET_FPU_VFP<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6eGAQBhiAALObuBqrRA242.png"/><p><br/><p>第三步:打开gd32f30x.h文件,设置 __FPU_PRESENT为1<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6eaANicrAAKQllSxQJM238.png"/><p><br/><p>做完以上三步,可以看到SystemInit函数中的SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));语句从无效变为有效了(实际上这句就是打开FPU单元)。<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgaomWh6e2ANkqLAAD31X3yCFI880.png"/><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6fKAGCsqAAD7NE-3bRE920.png"/><p>好了,我们来验证下FPU是不是被打开了,我们编译工程并下载到MCU中,在Memory窗口看下0xE000ED88地址的数,如果为0x00F00000,就说明FPU被正确打开了。<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgaomWh6fiAfLPZAAB9O0RqHOw455.png"/><p><br/><p>下面我们来介绍下如何使用ARM的DSP库,首先,我们需要两个文件:arm_cortexM4lf_math.lib 和arm_math.h,GD官方库是不带这两个文件的,小伙伴们可以自行网上下载或者联系我们提供哦。<p>第一步:将arm_cortexM4lf_math.lib 加入到工程中<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6gCAWX8aAACt588UcXs007.png"/><p><br/><p>第二步:工程中定义ARM_MATH_CM4<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6gSAXHLMAAH_AzNTd4w205.png"/><p><br/><p>做好这两步后,就可以使用ARM DSP库了。调用的方法也很简单,在需要调用DSP库的文件中包含头文件:arm_math.h<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgaomWh6gmAWribAACFnZ9Sr74382.png"/><p><br/><p>然后就可以使用DSP库中的函数了,比如arm_sin_f32函数,下面分别用math标准库函数和ARM DSP math库来计算sin(π/6),小伙伴们可以自行测试运算速度差别哦。<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1104/.png" alt="wKgZomWh6hGAH2lYAADuZgTm3Cs424.png"/><br/>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/156159.html