【问题标题】:Setting registers in hardware peripherals在硬件外设中设置寄存器
【发布时间】:2012-04-25 03:13:12
【问题描述】:

现在我正在阅读一本名为《嵌入式系统编程》的入门级书籍。它有一节解释如何使用 C 操作外围设备上的寄存器。

一开始有一个例子,我只是不明白。

uint32_t *pGpio0Set = (uint32_t *)(0x40E00018);

我认为这是在声明一个指向 32 位无符号整数的指针。我还可以猜测的是,有问题的寄存器控制着一个 GPIO,并且该寄存器位于地址 0x40E00018。

我不明白的是(0x40E00018)前面的(uint32_t *)是什么意思,有什么作用。

安德鲁

【问题讨论】:

    标签: c pointers cpu-registers


    【解决方案1】:

    它被称为type cast。它通常将一种类型转换为另一种类型。在这种情况下,它将十六进制数转换为地址。该十六进制数字周围的括号是多余的。

    【讨论】:

      【解决方案2】:

      这是从整数类型转换为指向整数的指针。
      如果您不这样做,编译器会抱怨您将整数分配给不同的类型。即使是指针 is 也大多只是一个整数(在任何平台上都不是真的),编译器希望确定您真的打算使用该数字作为地址。

      【讨论】:

        猜你喜欢
        • 2019-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        • 1970-01-01
        • 2018-02-24
        • 2020-10-03
        相关资源
        最近更新 更多