STM32H7 FPU中未设置除零异常标志

STM32H7 FPU中未设置除零异常标志,stm32,cortex-m,fpu,Stm32,Cortex M,Fpu,我正在研究STM32H743(核子板,Keil IDE)的FPU 我已经检查了FPU是否在寄存器CPACR中启用 我编译了以下愚蠢的代码: volatile double test = 0; test = 1.0 / test; 如果我看一下总成,我得到: VDIV.F64 d0,d1,d0 其中d1包含1的双精度表示,d0包含0的双精度表示 指令d0包含表示无穷大的0x7F00…00,因此看起来很好 然而,寄存器FPSCR中的标志DZC没有设置,正如我所期望的那样 我遗漏了什么吗?问题出在

我正在研究STM32H743(核子板,Keil IDE)的FPU

我已经检查了FPU是否在寄存器CPACR中启用

我编译了以下愚蠢的代码:

volatile double test = 0;
test = 1.0 / test;
如果我看一下总成,我得到:

VDIV.F64 d0,d1,d0
其中d1包含1的双精度表示,d0包含0的双精度表示

指令d0包含表示无穷大的
0x7F00…00
,因此看起来很好

然而,寄存器
FPSCR
中的标志
DZC
没有设置,正如我所期望的那样


我遗漏了什么吗?

问题出在调试器中

从代码中读取FPSCR(使用指令VMRS)可以正常工作。但是通过Keil 5.28的调试器(系统查看器FPU选项卡),该值是错误的

我听说gdb也有同样的问题

编辑:因为我回到了FPU异常管理,我注意到我之前的回答错了。Cortex M7编程手册明确指出:

FPSCR寄存器不是内存映射的,可以使用 VMR和VMRS指令


所以这不是调试器的问题。

DZE位是零吗?什么是DZE?我在架构手册中没有找到这一点。如果你说的是DZC,是的,它是0。