STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。 ( Q* f& g$ Y- u. S3 C 观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)5 v0 [; K& P/ j 7 A$ }" H. S; @0 J- a$ r . l) S, E* T- B" }9 Q5 C ' c( s6 L6 _* b$ w R 在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?6 U0 [' C' v3 u' e! P5 h ( F, J8 Q& Q) T D$ a- `' i% Y 验证方法1: 我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。 3 ] o; P' |& p' o/ n 验证方法2:" I. o! T2 n; _* I- X* ~% r 进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。 + L/ k! e" l y% b7 S 8 f/ s6 G: n7 K/ L+ O/ O % A3 j5 [9 v# {; k& L FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数 / `! E& n5 A/ } ) M# `0 h# ?' }7 t8 y; I 3 F) N6 \8 e* Z4 ~) p( m 5 E. p$ r% G6 C1 Y" { |
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项
用 STM32CUBEMX 生成 STM32H735 LWIP PING 不成功
基于STM32H7 EXTI + SPI +DMA 双缓冲应用经验分享