[STM32F4] STM32F405RGT6开FPU单元方法

[复制链接]
 楼主| wowu 发表于 2025-6-16 11:13 | 显示全部楼层 |阅读模式
1.在MDK的Target界面没有开FPU选项时

71642684b97fc2378e.png

在启动文件中添加以下代码,我的是从170行开始添加

Reset_Handler:
    ; Enable FPU
    LDR.W   R0, =0xE000ED88    ; CPACR 地址
    LDR     R1, [R0]
    ORR     R1, R1, #(0xF << 20) ; 设置 CP10 & CP11 (Full Access)
    STR     R1, [R0]
    DSB                        ; 确保写入完成
    ISB                        ; 清空流水线
    ; 继续正常启动代码...

82044684b97f010084.png


2.C/C++添加代码(我的MDK版本比较老)
在Define中添加

__FPU_PRESENT=1


在 Options for Target → C/C++ → Misc Controls 输入:

--cpu=Cortex-M4.fp

13137684b97e016957.png


3.测试FPU开启是否成功
#include <math.h>

int main()
{
    float a = 2.0f;
    float b = sqrtf(a);  // 如果 FPU 启用,这里不会 HardFault
    while (1);
}


最后点灯测试这段代码的执行时间为400ns。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_44864842/article/details/148510953

您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

4321

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部