我正在深入研究STM32H743的FPU (核心板,Keil )。
我检查过FPU是否已在寄存器CPACR中启用。
我编译了以下愚蠢的代码:
volatile double test = 0;
test = 1.0 / test;
如果我看一下大会,我会发现:
VDIV.F64 d0,d1,d0
其中d1包含1的双表示,d0包含0的双表示。
在指令之后,d0包含表示无穷大的0x7F00...00
,因此它看起来很好。
但是,寄存器FPSCR
中的标志FPSCR
没有设置,正如我所预期的那样。
我漏掉了什么吗?
发布于 2020-06-03 07:32:25
问题在调试器中。
从代码中读取FPSCR (使用VMRS指令)可以正常工作。但是通过Keil 5.28的调试器(选项卡),这个值是错误的。
有人告诉我,gdb也有同样的问题。
编辑:由于我回到FPU异常管理,我注意到我在我以前的答案是错误的。“Cortex M7编程手册”明确指出:
FPSCR寄存器不是内存映射的,它可以使用VMSR和VMRS指令访问。
因此,这不是调试器问题。
https://stackoverflow.com/questions/61887607
复制相似问题