0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

极海APM32F411微控制器硬件FPU使用指南

Geehy极海半导体 ? 来源:21ic论坛极海半导体专区 ? 2025-06-28 11:23 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:转载自21ic论坛极海半导体专区

1、前言

APM32F411是一款基于32位Arm Cortex-M4F内核的微控制器。硬件FPU是Arm Cortex-M4F的一大优势。合理应用硬件FPU可以大大缩短运算时间。

2、如何开启硬件FPU

在system_apm32f4xx.c文件的SystemInit()函数里,有下图所示语句:

8adb0aea-50d0-11f0-b715-92fbcf53809c.jpg

当__FPU_PRESENT(是否带有FPU)和__FPU_USED(是否开启FPU)都为1时,硬件FPU才算成功开启。

从M4权威指南手册可以查到,SCB->CPACR的寄存器信息如下图所示:

8ae5eae6-50d0-11f0-b715-92fbcf53809c.jpg

实际应用中,CP10和CP11一般都设置为11。

8af55954-50d0-11f0-b715-92fbcf53809c.jpg

KEIL软件提供了一个非常方便的开启硬件FPU功能选项。如下图所示,点击KEIL的“魔法棒”菜单。“Target”界面中的“Floating Point Hardware”选项选择“Single Precision”。点击“OK”,完成硬件FPU开启。

8b05cea6-50d0-11f0-b715-92fbcf53809c.jpg

3、测试

通过实例测试,感受一下硬件FPU的运算速度。根据极海官网APM32F4xx_SDK_V1.4的的GPIO_Toggle例程修改,APM32F411系统时钟设置为100MHz。

3.1 开启和不开启FPU测试

部分测试代码,如下图所示。主函数包括两个函数:LED2(PE6)引脚翻转函数和测试函数。测试函数主要内容是重复执行200次data_b = data_a * 3.14159的乘法运算。

8b81c894-50d0-11f0-b715-92fbcf53809c.png

通过逻辑分析仪抓取PE6的高低电平,评估代码执行时间。

不开启硬件FPU的IO翻转时间约207.56us,如下图所示。

8b8f2f2a-50d0-11f0-b715-92fbcf53809c.png

开启硬件FPU的IO翻转时间约218.64us,如下图所示。

8b9d89a8-50d0-11f0-b715-92fbcf53809c.png

什么情况?开启硬件FPU的运算时间居然比不开启硬件FPU的运算时间要慢。

很多人使用M4/M4F产品,往往会忽略一个细节。参与运算的浮点型常量3.14159在C语言中默认是double类型常量。M4/M4F的硬件FPU只对单精度浮点数运算加速。所以,对double类型浮点数运算无效。

为什么开启硬件FPU的运算时间比不开启硬件FPU的运算时间要慢?我们从汇编代码可以看出,同样的一条乘法运算语句,不开启硬件FPU计算需要10816 - 10627 = 189个机器周期,开启硬件FPU计算需要10883 - 10692 = 191个机器周期,差了2个机器周期。

不开启硬件FPU的乘法运算汇编代码及机器周期数如下图所示:

8ba9af6c-50d0-11f0-b715-92fbcf53809c.png

8bbd22d6-50d0-11f0-b715-92fbcf53809c.png

开启硬件FPU的乘法运算汇编代码及机器周期数如下图所示:

8bcfef06-50d0-11f0-b715-92fbcf53809c.png

8bdeaeec-50d0-11f0-b715-92fbcf53809c.png

3.2 浮点型常量都加f后缀,开启和不开启FPU测试。

float类型数值取值范围是

-3.402823466×1038~3.402823466×1038,可以满足大部分应用。测试代码的浮点型常量加上后缀f,其他内容与3.1章节一致,如下图所示。

8beb84d2-50d0-11f0-b715-92fbcf53809c.png

不开启硬件FPU的IO翻转时间约73.48us,如下图所示。

8bf716a8-50d0-11f0-b715-92fbcf53809c.png

开启硬件FPU的IO翻转时间约16.4us,如下图所示。

8c037baa-50d0-11f0-b715-92fbcf53809c.jpg

这才是我们想要的效果。从汇编代码对比,同样的一条乘法运算语句,不开启硬件FPU计算需要10737 - 10677 = 60个机器周期,开启硬件FPU计算需要11176 - 11165 = 11个机器周期,差了49个机器周期。

不开启硬件FPU的乘法运算汇编代码及机器周期数,如下图所示:

8c126714-50d0-11f0-b715-92fbcf53809c.jpg

8c1f3976-50d0-11f0-b715-92fbcf53809c.jpg

开启硬件FPU的乘法运算汇编代码及机器周期数,如下图所示:

8c2fa5c2-50d0-11f0-b715-92fbcf53809c.jpg

8c3b70d2-50d0-11f0-b715-92fbcf53809c.jpg

4、结论

测试结果如下表所示

硬件FPU 浮点型常量 运行时间 data_b = data_a * 3.14159运算时间
不开启 不带f后缀 207.56us 189个机器周期
不开启 带f后缀 73.48us 60个机器周期
开启 不带f后缀 218.64us 191个机器周期
开启 带f后缀 16.4us 11个机器周期

计算没有超出float类型数值取值范围的情况,建议浮点型常量都加上后缀f,可以缩短运算时间。如果没有float类型数值运算,可以不开启硬件FPU。

对于float类型数值运算,建议开启硬件FPU,可以大大缩短运算时间。比如,该例程的语句乘法运算,开启硬件FPU的运算比未开启硬件FPU的运算少了49个机器周期数,运算时间提升约81.67%。

注:文章作者在原帖中提供了例程文件,有需要请至原文21ic论坛下载

原文地址:https://bbs.21ic.com/icview-3329150-1-1.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7967

    浏览量

    156087
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9374

    浏览量

    378737
  • 内核
    +关注

    关注

    3

    文章

    1418

    浏览量

    41559
  • 函数
    +关注

    关注

    3

    文章

    4385

    浏览量

    65144
  • 极海半导体
    +关注

    关注

    0

    文章

    166

    浏览量

    4825

原文标题:APM32芯得 EP.58 | APM32F411硬件FPU使用方法及注意点

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于APM32F411 DMA_ADC Handler模式分析及解决

    ADC连续转换采集,因此,我没过滤掉ADC采集中开启中断配置的信息,开启了ADC中断采集,因此这次以APM32F411官方例程中的DMA_ADC例程,复刻了此次出现的问题。
    的头像 发表于 06-24 14:30 ?544次阅读
    基于<b class='flag-5'>APM32F411</b> DMA_ADC Handler模式分析及解决

    APM32F411打造可自动化的命令行工作流

    拿到APM32F411的TINY板卡后,在打开官方提供的SDK发现,他们提供的MDK、IAR、Eclipse的工程示例。非常不错,但是我想着有一些场景下在没有安装IDE的情况下怎么编译程序呢?
    的头像 发表于 07-11 10:00 ?1171次阅读
    为<b class='flag-5'>APM32F411</b>打造可自动化的命令行工作流

    正式发布 | APM32F411系列高适配型MCU,均衡功耗、性能与成本

    APM32F411系列高性能高适配型MCU,该系列新品基于Arm? Cortex? -M4F内核,采用55nm工艺制程,拥有大容量Flash、SRAM以及丰富的片内外设,具有优秀的方案适用性和可靠性。 ? 该产品可广泛应用于仪器仪表、工控设备、智能家电、基站电源、网关设备
    发表于 08-08 17:51 ?1079次阅读
    正式发布 | <b class='flag-5'>极</b><b class='flag-5'>海</b><b class='flag-5'>APM32F411</b>系列高适配型MCU,均衡功耗、性能与成本

    充能新时代 | 基于APM32F411的EV交流充电桩应用方案

    将推动全球充电桩市场的快速发展,预计该市场年复合增长率可达36.0%,于2030年增长至1410.8亿美元规模。 ? ? 面向EV交流充电桩市场需求,采用基于Cortex-M4F内核的高适配型
    发表于 05-20 17:24 ?1445次阅读
    充能新时代 | 基于<b class='flag-5'>APM32F411</b>的EV交流充电桩应用方案

    TinyMaix框架的内存需求超过了APM32F411的可用内存,导致运行失败,怎么能成功优化?

    TinyMaix框架的内存需求超过了APM32F411的可用内存,导致运行失败。怎么能成功优化?
    发表于 09-27 09:44

    HPM6000系列微控制器的片上各类SRAM使用指南

    HPM6000系列微控制器片上SRAM使用指南
    发表于 06-01 06:19

    STM32F411xC和STM32F411XE微控制器的数据手册免费下载

    本参考手册面向应用程序开发人员。它提供了如何使用STM32F411xC/E微控制器的内存和外围设备的完整信息。STM32F411xC/E是具有不同内存大小、封装和外围设备的微控制器系列
    发表于 11-11 08:00 ?91次下载
    STM32<b class='flag-5'>F411</b>xC和STM32<b class='flag-5'>F411</b>XE<b class='flag-5'>微控制器</b>的数据手册免费下载

    UM1842_STM32F411VE微控制器探索套件

    UM1842_STM32F411VE微控制器探索套件
    发表于 11-22 19:10 ?0次下载
    UM1842_STM32<b class='flag-5'>F411</b>VE<b class='flag-5'>微控制器</b>探索套件

    32位微控制器APM32F405xG/APM32F407xExG

    32位微控制器APM32F405xG/APM32F407xExG规格书免费下载。属于新车规型号,需要样品可以和我联系。159947895
    发表于 12-13 11:51 ?2次下载

    支持烧录Geehy半导体的32位微控制器APM32F407RET6

    芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中昂科发布软件更新支持Geehy半导体的32位微控制器APM32F407RET6已经被昂科的通用烧
    的头像 发表于 06-21 17:56 ?1611次阅读
    支持烧录Geehy<b class='flag-5'>极</b><b class='flag-5'>海</b>半导体的32位<b class='flag-5'>微控制器</b><b class='flag-5'>APM32F</b>407RET6

    半导体推出APM32F411系列高性能高适配型MCU

    面向能耗与成本敏感的中高端工业应用市场,不仅对芯片性能与功耗有更高要求,复杂的功能需求也考量着芯片的适配性与稳定性。为平衡客户对产品低功耗、高性能与高性价比等综合需求,正式推出APM32F411
    发表于 08-06 10:32 ?856次阅读
    <b class='flag-5'>极</b><b class='flag-5'>海</b>半导体推出<b class='flag-5'>APM32F411</b>系列高性能高适配型MCU

    基于半导体APM32F407系列MCU的伺服控制器应用方案

    基于半导体APM32F407系列MCU的伺服控制器应用方案
    的头像 发表于 09-19 16:48 ?1663次阅读
    基于<b class='flag-5'>极</b><b class='flag-5'>海</b>半导体<b class='flag-5'>APM32F</b>407系列MCU的伺服<b class='flag-5'>控制器</b>应用方案

    32位微控制器HC32F460系列硬件开发指南

    电子发烧友网站提供《32位微控制器HC32F460系列硬件开发指南.pdf》资料免费下载
    发表于 11-13 16:48 ?8次下载

    APM32F072xBT7硬件兼容ST电动车应用方案mcu

    APM32F072xBT7硬件兼容ST电动车应用方案MCU 随着电动车市场的不断发展,对于电动车控制器的要求也越来越高。而作为电动车
    的头像 发表于 03-04 21:30 ?987次阅读

    半导体发布EV交流充电桩应用方案

    半导体针对EV交流充电桩市场,推出了基于AAPM32F411系列MCU的应用方案。这款基于Cortex-M4F内核的APM32F411
    的头像 发表于 05-23 11:38 ?1475次阅读