1

为什么转换为浮点数会在 STM32F429ZI (App_Fault_ISR) 上遇到硬错误?

我不确定这里发生了什么。我在 Atollic TrueSTUDIO 上使用 Nucleo 板 STM32F429ZI

编码

CPU_FP32 speed;
CPU_INT32U val = (CPU_INT32U)(0x20u >> 4u);
speed = (CPU_FP32)val;

上次崩溃的程序集

080026f2:   bl      0x8001dc8 <BSP_Tick_Init>
51            CPU_INT32U val = (CPU_INT32U)(0x20u >> 4u);
080026f6:   movs    r3, #2
080026f8:   str     r3, [r7, #4]
52            speed = (CPU_FP32)val;
080026fa:   ldr     r3, [r7, #4]
080026fc:   vmov    s15, r3            <----  

好像是搬家问题

硬故障检测窗口

总线、内存管理或使用错误 (FORCED) 额外细节 尝试执行协处理器指令 (NOCP)

这落在 App_Fault_ISR上,这似乎是一个硬故障

至于配置 Assembler、Compiler 和 C Linker 在设置中启用了 FPU (FPv4-SP-D16) Hardware Implementation selected

4

1 回答 1

2

看起来您还没有启用 FPU,这需要在尝试任何浮点指令之前完成。您必须在CPACR寄存器中设置位 20-23。

链接显示了所需的步骤,我通常在我的启动代码中执行此操作。

于 2020-01-29T13:34:10.050 回答