首页 > 解决方案 > 这在 C 中到底意味着什么?

问题描述

#define RegisterX_Address (*((volatile unsigned int*)0x400253FC))

我需要了解(*((volatile unsigned int*)0x400253FC))C 中的 this 是什么,我知道这是一个指向其中一个寄存器地址的指针,但为什么要这样写???

标签: cpointers

解决方案


在任何平台上,内存地址都0x400253FC包含 1int个数据。

如果您取消引用0x400253FC,您将获得该值。

这可能用于:

unsigned int GetCPUTemperature()
{
    unsigned int temp;
    temp = RegisterX_Address;
    return temp;
}

将数据直接映射到特定的内存地址并不常见,但在嵌入式开发中经常发生。

volatile关键字告诉编译器它不能缓存、存储或重用它获得的值。它必须在每次访问时从内存中检索值,因为在那里写入数据的任何内容都会定期更新值并且超出程序范围。


推荐阅读