while (*(MPcore_private_timer_ptr + 3) == 0) 中的“+ 3”是什么意思?
What does "+ 3" in while (*(MPcore_private_timer_ptr + 3) == 0) mean?
我正在阅读DE0-Nano-SoC计算机系统
使用 ARM Cortex-A9 用户指南,我在其中找到了一个 C 代码,但我不明白“*(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
}
*(MPcore_private_timer_ptr + 3)
等同于 MPcore_private_timer_ptr[3]
。
您取消引用递增的指针。
在@yar 的回答之后,MPcore_private_timer_ptr
是一个指向内存映射计时器基地址的指针,即计时器的寄存器都从该地址开始。 +3 偏移量将您带到该定时器的另一个寄存器(在本例中为中断状态寄存器)。
Blockquote
*(MPcore_private_timer_ptr + 3) = 1; // reset timer flag bit
是 :
的同义词
*(&MPcore_private_timer_ptr[3]) = 1; // reset timer flag bit
我正在阅读DE0-Nano-SoC计算机系统 使用 ARM Cortex-A9 用户指南,我在其中找到了一个 C 代码,但我不明白“*(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
}
*(MPcore_private_timer_ptr + 3)
等同于 MPcore_private_timer_ptr[3]
。
您取消引用递增的指针。
在@yar 的回答之后,MPcore_private_timer_ptr
是一个指向内存映射计时器基地址的指针,即计时器的寄存器都从该地址开始。 +3 偏移量将您带到该定时器的另一个寄存器(在本例中为中断状态寄存器)。
Blockquote
*(MPcore_private_timer_ptr + 3) = 1; // reset timer flag bit
是 :
的同义词*(&MPcore_private_timer_ptr[3]) = 1; // reset timer flag bit