打印
[STM32F4]

如何在STM32F407中使用FPU。

[复制链接]
184|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
地瓜patch|  楼主 | 2025-7-30 21:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想用STM32F407 Discovery利用FPU进行开发。
我需要运行一些浮点数和指数计算。需要使用FPU来加速计算过程。
我已经完成了外设驱动程序(我没有使用Cube HAL层或CMSIS层的代码)。
如何利用处理器的FPU来执行浮点计算?需要编写代码还是需要添加某些库?
我试过在设置中启用硬件的FPU,但当我执行浮点/双精度计算时,代码陷入了死循环,我猜测这是因为缺少执行浮点计算的代码或FPU未被使用?
如何执行基于软件的浮点计算。
我需要向代码中添加哪个库。

使用特权

评论回复
沙发
磨砂| | 2025-8-1 10:45 | 只看该作者
进入“Configuration”选项卡,确保勾选FPU功能。此操作会自动设置相关寄存器,使FPU处于活动状态

使用特权

评论回复
板凳
香水城| | 2025-8-1 11:06 | 只看该作者
下面文章供参考下:


关于STM32浮点运算单元FPU的小话题

使用特权

评论回复
地板
晓伍| | 2025-8-1 13:08 | 只看该作者
在启动文件中添加以下代码以手动激活FPU
LDR.W R0, =0xE000ED88      // 加载FPU控制寄存器地址
LDR R1, [R0]              // 读取当前值
ORR R1, R1, #(0xF << 20)   // 设置权限位(允许所有访问级别)
STR R1, [R0]              // 写回寄存器
DSB                       // 数据同步屏障
ISB                       // 指令同步屏障


使用特权

评论回复
5
八层楼| | 2025-8-1 15:39 | 只看该作者
在C代码中配置FPU的控制寄存器,例如启用单精度模式

使用特权

评论回复
6
观海| | 2025-8-1 17:58 | 只看该作者
通过调试模式查看汇编代码是否包含以[size=0.875]V开头的指令,这是FPU生效的标志

使用特权

评论回复
7
guanjiaer| | 2025-8-1 20:17 | 只看该作者
STM32F4系列仅支持单精度浮点。双精度运算可能导致异常错误,所以建议优先使用[size=0.875]float而非double

使用特权

评论回复
8
heimaojingzhang| | 2025-8-1 22:35 | 只看该作者
对于三角函数等复杂计算,调用ARM优化过的数学库函数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

1762

主题

14744

帖子

29

粉丝