gpt4 book ai didi

c - 为什么我们像这样在微 Controller 编程中寻址寄存器

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:42 25 4
gpt4 key购买 nike

为什么我们在写寄存器地址时要在基地址上加上偏移量?

还有为什么我们要写下面这样的语法

#define CGPIO  (*((volatile unsigned long*)0x400FE608));

我指的只是指针部分的语法

最佳答案

(volatile unsigned long*)0x400FE608 语法将内存中的硬件特定地址(可能是寄存器)转换为指向 volatile unsigned long 的指针。指针的类型,volatile unsigned long,基于寄存器的大小,需要将其视为无符号。该指针定义为指向 volatile,以确保编译器不会优化多次读写,每次您的代码需要时执行一个操作。

整个表达式前面的星号和括号是为了让您可以将 CGPIO 视为可分配的全局变量,并编写

CGPIO = 123;

unsigned long val = CGPIO;

无需在CGPIO前添加星号。

关于c - 为什么我们像这样在微 Controller 编程中寻址寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38276524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com