1.在MDK的Target界面没有开FPU选项时
在启动文件中添加以下代码,我的是从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 ; 清空流水线
; 继续正常启动代码...
2.C/C++添加代码(我的MDK版本比较老)
在Define中添加
__FPU_PRESENT=1
在 Options for Target → C/C++ → Misc Controls 输入:
--cpu=Cortex-M4.fp
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
|