STM32H7 FPU中未设置除零异常标志
我正在研究STM32H743(核子板,Keil IDE)的FPU 我已经检查了FPU是否在寄存器CPACR中启用 我编译了以下愚蠢的代码: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没有设置,正如我所期望的那样 我遗漏了什么吗?问题出在
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。