gpt4 book ai didi

c - 将指针写入 GPIO 输出引脚的地址

转载 作者:太空狗 更新时间:2023-10-29 15:28:06 27 4
gpt4 key购买 nike

嵌入式系统的绝对菜鸟。现在我正在尝试用 C 编写一个名为 nRF52832 的设备。我知道 GPIO 的基地址是 0x50000000,OUT 寄存器的偏移量是 0x504。如何创建指向 GPIO OUT 地址的指针并打印地址?

我会吗

volatile unsigned int* GPIO_BASE = (unsigned int*) 0x50000000;
volatile unsigned int* GPIO_OUT = GPIO_BASE + 0x504; ?

最佳答案

请记住,指针运算始终以指针基类型为单位进行。

这意味着表达式 GPIO_BASE + 0x504 将添加一个字节偏移量 0x504 * sizeof *GPIO_BASE,即 0x504 * sizeof(int)(在大多数系统上,偏移量为 5136 字节,而不是 1284 字节)。

如果要添加 0x504 bytes 的偏移量,则需要将其除以指针基类型的大小:

volatile unsigned int* GPIO_OUT = GPIO_BASE + (0x504 / sizeof *GPIO_BASE);

除了这个问题你的代码是正确的,并且是访问硬件寄存器的一种非常常见的方式。

关于c - 将指针写入 GPIO 输出引脚的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57951076/

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