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%。
热门推荐
白芷入诗又入药:<楚辞>中的植物智慧
大众遥控钥匙失效原因分析与处理方法
大众汽车遥控钥匙隐藏功能:单开驾驶门、自动落锁更安全
大众遥控钥匙失灵?这4个原因最常见,教你轻松应对
玉米蛇饲养避坑指南:温度湿度是关键
养玉米蛇,这些健康管理技巧你知道吗?
玉米蛇健康指南:如何避免常见疾病?
昆明西山森林公园:7大景点、4条路线,玩转滇池畔的4A景区
成都至百色一日游:精选景点与行程安排
西南高校学子走进越西,助力凉山文旅发展
成都百色一日游:红色文化与壮乡风情精华游
安徒生童话:永恒的魅力与现代启示
哥本哈根打卡安徒生故居
从家居到科技:室内设计行业跨界营销全攻略
室内设计师打造个人IP:定位、内容与社交运营三大关键
解码家装数字化:破解长链条、多角色的行业难题
紫草膏的功效与作用
奈曼旗蒙古族媳妇陈丽娟:跨越语言与文化的孝道传承
爱尔兰早餐:从传统食材到现代创新,感受不一样的英式早餐
维多利亚时代“全套早餐”:北爱尔兰人的文化记忆
Ponytail美妆新潮流:从日常到派对的完美搭配指南
2026考研:北京师范大学备考指南
北京师范大学:从京师大学堂走来的百年名校
北师大新生必读:从报到到校园生活全攻略
马太福音中的妇女见证:一个独特视角
耶稣复活:从历史见证到现代信仰
圣诞节前,重温耶稣复活的奇迹
暗区突围训练营攻略:从准心设置到实战技巧全面提升
网球联合杯新规则:混双比赛期间,球员或队长可以叫60秒暂停
暗区突围玩家福音:五大维度优化助你轻松破百帧