APM32F411硬件FPU使用方法及注意点
创作时间:
作者:
@小白创作中心
APM32F411硬件FPU使用方法及注意点
引用
CSDN
1.
https://m.blog.csdn.net/ic2121/article/details/139815480
APM32F411是一款基于32位Arm Cortex-M4F内核的微控制器,其内置的硬件FPU(浮点运算单元)能够显著提升浮点运算的效率。本文将详细介绍如何开启硬件FPU,并通过实际测试案例展示其性能优势。
1. 如何开启硬件FPU
在system_apm32f4xx.c
文件的SystemInit()
函数中,需要确保__FPU_PRESENT
(是否带有FPU)和__FPU_USED
(是否开启FPU)都设置为1。从M4权威指南手册可以查到,SCB->CPACR
寄存器的配置如下:
实际应用中,CP10和CP11一般都设置为11。
KEIL软件提供了一个非常方便的开启硬件FPU功能选项。在KEIL的“Target”界面中,将“Floating Point Hardware”选项选择为“Single Precision”,即可完成硬件FPU的开启。
2. 测试案例
为了直观感受硬件FPU的运算速度,我们基于极海官网APM32F4xx_SDK_V1.4的GPIO_Toggle例程进行测试,将APM32F411系统时钟设置为100MHz。
2.1 开启和不开启FPU的测试
测试代码如下:
void test_function(void) {
float data_a = 1.0;
float data_b;
for (int i = 0; i < 200; i++) {
data_b = data_a * 3.14159;
}
}
通过逻辑分析仪抓取PE6引脚的高低电平,评估代码执行时间。
- 不开启硬件FPU的IO翻转时间约207.56us:
- 开启硬件FPU的IO翻转时间约218.64us:
令人意外的是,开启硬件FPU的运算时间反而更慢。这是因为参与运算的浮点型常量3.14159默认是double类型,而M4/M4F的硬件FPU只对单精度浮点数(float)加速。
从汇编代码可以看出,不开启硬件FPU计算需要189个机器周期,开启硬件FPU计算需要191个机器周期,差了2个机器周期。
2.2 浮点型常量加f后缀后的测试
将浮点型常量加上f后缀,测试代码变为:
void test_function(void) {
float data_a = 1.0f;
float data_b;
for (int i = 0; i < 200; i++) {
data_b = data_a * 3.14159f;
}
}
测试结果如下:
- 不开启硬件FPU的IO翻转时间约73.48us
- 开启硬件FPU的IO翻转时间约16.4us
从汇编代码对比可以看出,不开启硬件FPU计算需要60个机器周期,开启硬件FPU计算需要11个机器周期,差了49个机器周期。
3. 测试总结
硬件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%。
热门推荐
晚年卫青为何屡遭打压?汉武帝的深层考量
不同年龄人群,eGFR 的正常参考范围是?
科学技术:基于物质与精神统一的理论探索
精神与物质:哲学视角下的共舞
温州住房公积金提取额度计算指南
科普:自学珠宝知识买钻石靠谱吗?这些造假手段需警惕!
先有莲花池,后有北京城,金中都的文化脉络由它延续
学位论文与毕业论文的区别:定义与实例分析
交互设计vs 用户体验设计vs视觉设计,有哪些本质区别?
视觉设计和交互设计的区别
光圈与景深的7个艺术秘密:深入理解并实操
何冬梅:让“东方油画”焕发新生机
春天食欲不振?这道五花肉炒杂蔬,4种蔬菜融合,鲜香扑鼻!
一个月三笔收购,腾讯游戏投资提速的背后逻辑
2025首篇关于多模态大模型在富文本图像理解上的全面研究综述
《燕云十六声》门派玩法 可拜师入门或无门无派
开始“体重管理”的年轻人,将“懒人运动”进行到底
五香粉和十三香的区别及用途!
新生儿安全睡眠指南:正确睡姿与环境布置全攻略
服装行业的岗位内容与发展前景
深蹲后,膝盖疼痛?注意这5个细节,让深蹲训练更安全稳定
东京迪士尼交通攻略:搭JR还是自驾最轻松?交通票券优惠信息整理
汽车冷却液应如何进行检查?检查汽车冷却液有哪些要点?
大禹治水所用的工具是什么
加拿大电镀产业占比及市场前景展望
如何安全地为车辆改装车灯?车灯改装需要遵循哪些规定?
“杀猪盘”诈骗新套路:从“军人小哥哥”到聋哑人精准诈骗
国际刑警组织建议停止使用“杀猪盘”一词
A股市场中如何设置合理的止损单?止损单的设置需要考虑哪些因素?
施工项目质量管理怎么实施