Loops keil 4和STM32F4FPU不工作

Loops keil 4和STM32F4FPU不工作,loops,arm,keil,stm32f4discovery,fpu,Loops,Arm,Keil,Stm32f4discovery,Fpu,//////编辑:已解决,请阅读下面的解决方案 我试图将fpu与stm32f4Discovery板一起使用,用keil4(免费版)编程,但在尝试使用时,进入无限循环 我不知道确切的原因,我正在使用一个非常简单的C代码和调试器: #包括“stm32f4_discovery.h” #包括 浮点数a=1.332,b=2.994; 内部主(空) { printf(“Hola”); printf(“%f”,a*b); 返回(0); } 以下是调试器的结果:由于“发生硬故障异常”,printf viewe

//////编辑:已解决,请阅读下面的解决方案

我试图将
fpu
stm32f4Discovery
板一起使用,用keil4(免费版)编程,但在尝试使用时,进入无限循环

我不知道确切的原因,我正在使用一个非常简单的C代码和调试器:

#包括“stm32f4_discovery.h”
#包括
浮点数a=1.332,b=2.994;
内部主(空)
{
printf(“Hola”);
printf(“%f”,a*b);
返回(0);
}
以下是调试器的结果:由于“发生硬故障异常”,printf viewer和无限循环中没有任何内容()

如果没有行
printf(“%f”,a*b)
调试器将完美地显示“Hola”并结束程序

自从几个月前我在大学里的一个项目中使用这个板以来,我一直在谷歌上搜索一个可能的解决方案,但任何人都知道如何修复它

我知道我可以禁用fpu和使用库,但这不是重点

谢谢你的帮助

///////////////解决方案 我必须更改startup_stm32f4xx.s中的代码和system_stm32f4xx.c中的函数SystemInit()

在startup_stm32f4xx.s中,搜索重置处理程序,代码应该如下所示,但下面的“FPU设置”大部分不是原始的:


; 重置处理程序
重置处理器进程
导出重置\u处理程序[弱]
导入系统初始化
导入主

             ;FPU settings
             LDR     R0, =0xE000ED88           ; Enable CP10,CP11
             LDR     R1,[R0]
             ORR     R1,R1,#(0xF << 20)
             STR     R1,[R0]

             LDR     R0, =SystemInit
             BLX     R0
             LDR     R0, =__main
             BX      R0
             ENDP
#如果(当前==1)和((已使用==1)
SCB->CPACR |=((3UL您是否在启动代码中启用对FPU的访问?我已在选项中配置了FPU的使用,并更改了“编译器控制字符串”添加--cpu Cortex-M4.fp我没有使用SystemInit()在代码中,因为编译器为我提供了它,所以可能这个函数没有启用对FPU的访问?是的,配置编译器以实际生成FP指令仅仅是事情的一半(特别是,第二部分;).我对Keil/ST软件栈一无所知,但我希望在某个地方有一个可以很好地抽象的函数-希望这至少能给你一个调查的途径!好的,我做了一件事,它正在工作,我将用解决方案编辑第一篇文章,非常感谢
/* FPU settings ------------------------------------------------------------*/