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物就别贪多了
你爱吃辣吗?不吃辣椒的人真的亏了!研究表明吃辣好处多多!
酸辣汤的制作:原料和做法详解
年经济“热气”升腾,消费旺!“花样”年货琳琅满目“俏”销市场
口干尿频尿急是什么原因
青岛最美拍摄地,你去过几个?
崂山:青岛旅游必打卡的神仙景点
青岛新晋5A景区打卡指南:海洋旅游大揭秘
10万日元日本购物全攻略:免税店、百货公司必买清单
充氮保鲜技术:让食品更安全,让生活更绿色
制氮机保鲜技术:果蔬保鲜的新宠
烘焙冷却和咖啡豆保鲜的秘密武器——充氮保鲜技术
充氮保鲜技术:冷链物流的新宠儿
《白月梵星》:2025开年仙侠剧的七大亮点
曼谷野生动物园自驾游攻略:近距离接触猛兽的刺激之旅
曼谷野生动物园亲子游攻略:必打卡景点
曼谷野生动物园长颈鹿喂食攻略:200泰铢与百只长颈鹿亲密接触
曼谷野生动物园亲子游:刺激的动物喂食秀与亲密互动体验
DIY 4G天线:从材料选购到算法优化的完整指南
揭秘手机信号差的地理黑幕
2025开年大剧,白鹿杨紫谁能封神?
韭菜炒鸡蛋
《真心英雄》:2025开年大剧,政法英模的平凡与伟大
总台2025开年大剧,带你穿越历史长河
春节档《蛟龙行动》,林超贤带你体验科研式拍摄
攀枝花至厦门旅游攻略:交通、住宿、景点全解析
5G来了,你的手机信号变好了吗?