我将数字 20 (0x14) 存储在 32 位寄存器中。该寄存器被分配给一个代表值 2.8e-44 的 C 浮点变量。现在我想把浮点变量的十六进制表示取回来,存入一个整型变量中,以恢复信息的原始含义。除了做一些指针业务之外,有没有更好的方法来做到这一点?这是代码:
#include <stdio.h>
int main()
{
float f = 2.802597e-44;
int nv,*pnv;
printf("f=%f\n",f);
printf("n=%d\n",f);
nv=(int)f;
printf("n=%d\n",nv);
pnv=(int*)&f;
printf("n=%d\n",(*pnv));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用 pnv 整数指针得到了我想要的东西。有没有更好的方法来避免指针并在 C 中工作?
我想点亮 STM32F4-discovery 板上的 LED。处理器为STM32F429ZIT6。我的汇编代码如下:
TTL LLED
AREA Myprog, CODE, READONLY
ENTRY
EXPORT __main
__main
LDR r5,=0x40021800; MODERG
LDR r7,=0x4002180C; GPIOG_PUPDR
MOV r8,#0x04000000
STR r8, [r5]
STR r8, [r7]
LDR r8,=0x00000000; to set PG13
STR r8,[r6]
MOV r5,#0x20000000
MOV r8,#0xFFFFFFFF
STR r8, [r5]
END
Run Code Online (Sandbox Code Playgroud)
我用 ST-Link 调试器检查了地址 0x40021800 中的内存,但是在 STR 命令之后没有任何变化,尽管寄存器的值是正确的。ST 的文档太糟糕了,完全零个例子。在 Internet 0 中有关程序集和 ARM 的信息。书中有一个关于 UART 的例子,但没有关于 GPOI。我花了整个太阳,现在我快疯了。嘻嘻!!!!