c - 这在 C 中到底意味着什么?
问题描述
#define RegisterX_Address (*((volatile unsigned int*)0x400253FC))
我需要了解(*((volatile unsigned int*)0x400253FC))
C 中的 this 是什么,我知道这是一个指向其中一个寄存器地址的指针,但为什么要这样写???
解决方案
在任何平台上,内存地址都0x400253FC
包含 1int
个数据。
如果您取消引用0x400253FC
,您将获得该值。
这可能用于:
unsigned int GetCPUTemperature()
{
unsigned int temp;
temp = RegisterX_Address;
return temp;
}
将数据直接映射到特定的内存地址并不常见,但在嵌入式开发中经常发生。
该volatile
关键字告诉编译器它不能缓存、存储或重用它获得的值。它必须在每次访问时从内存中检索值,因为在那里写入数据的任何内容都会定期更新值并且超出程序范围。
推荐阅读
- openshift - Openshift RBAC 策略允许预览环境中的项目访问来自不同项目的图像
- python - 将 XGBoost 保存到 SQL 并加载到另一台机器上
- java - 使用 Spring 表达式语言断言从属性文件加载的属性(使用逗号分隔的值)是否包含“值”
- algorithm - 如何合并多个重叠的日期范围并创建新的?
- c++ - BVH 树构造 - 编译会产生随机错误
- c - 如何用C中的指针增加数组的元素?
- browser - 为什么浏览器不在后退按钮历史记录中保留状态 302 页面?
- python - 找不到保存进度的 csv 数据文件(Python/Pyinstaller 基础,可能是 sys.MEIPASS 或 NSIS?)
- javascript - 我希望能够在我的 firebase 数据库中获取自动生成的 id 子值并在函数中使用它们
- directx - 从 GPU 获取 FPS 和帧时间信息