小编jud*_*acl的帖子

获取C中浮点型变量的整数表示值

我将数字 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 中工作?

c floating-point

2
推荐指数
1
解决办法
352
查看次数

arm 组件无法访问 GPIO

我想点亮 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。我花了整个太阳,现在我快疯了。嘻嘻!!!!

assembly arm

1
推荐指数
1
解决办法
1612
查看次数

标签 统计

arm ×1

assembly ×1

c ×1

floating-point ×1