0

我目前正在阅读带有 ARM Cortex-A9 用户指南的 DE0-Nano-SoC 计算机系统,我在其中找到了 ac 代码,但我不明白“*(MPcore_private_timer_ptr + 3)”中的“+ 3”是什么意思?

while (1)
{
*HPS_GPIO1_ptr = HPS_LEDG; // turn on/off LEDG
while (*(MPcore_private_timer_ptr + 3) == 0)
; // wait for timer to expire
*(MPcore_private_timer_ptr + 3) = 1; // reset timer flag bit
HPS_LEDG ^= bit_24_pattern; // toggle bit that controls LEDG
}
4

3 回答 3

1

*(MPcore_private_timer_ptr + 3)是一样的MPcore_private_timer_ptr[3]。您取消引用递增的指针。

于 2017-04-01T20:46:11.247 回答
1

对于@yar 的回答,MPcore_private_timer_ptr是一个指向内存映射定时器基地址的指针,即定时器的寄存器都从该地址开始。+3 偏移量将您带到该计时器的不同寄存器(在本例中为中断状态寄存器)。

于 2017-04-03T06:59:43.400 回答
0

块引用

*(MPcore_private_timer_ptr + 3) = 1; // 重置定时器标志位

是 的同义词:

*(&MPcore_private_timer_ptr[3]) = 1; // 重置定时器标志位

于 2017-04-05T07:09:51.680 回答