因此,除其他事项外,我还试图监测TI TM4C123GH6PM的板载温度。我有一些时间问题,而且我的两个中断处理程序中只有一个正在接触,但现在真正令人沮丧的部分是TM4C忽略了我的Float计算。
我有以下代码:
volatile float result;//temp
float temperature;//temp
float numerator;
float fraction;
result = ADC_SSR3;
numerator = ((float)75 * (float)3.3 * result);
fraction = numerator/((float)4096);
temperature = 147.5 - fraction;
作为一个注释,明确的类型转换是一个临时实验。
当我单步执行时,我从SSR3获得了合法的结果,但随后我的本地人读取了以下3行的“错误”。我首先想到FPU需要启用(正如我在一些论坛中看到的那样)但我也读过IAR Embedded Workbench中的编译器默认情况下这样做了,我选择了“VFPv4单精度”FPU在IAR项目的一般选项中。
这是生成的汇编指令列表: disassembly
当我单步执行时,我可以看到R#寄存器上的结果,但我在寄存器菜单中找不到S#寄存器(数据表中称为S0-S15错误寄存器,但我看到它们称为单点寄存器网络)。在每条指令结束时,分子/分数/温度的结果始终是“错误”。
我输入的任何明显错误,或者没有包含/调用?
谢谢!