什么" + 3" in while(*(MPcore_private_timer_ptr + 3)== 0)是什么意思?

时间:2017-04-01 20:43:00

标签: arm fpga intel-fpga soc

我目前正在阅读DE0-Nano-SoC计算机系统 使用ARM Cortex-A9用户指南,我在其中找到了一个c代码,我不明白" + 3" in" *(MPcore_private_timer_ptr + 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
}

3 个答案:

答案 0 :(得分:1)

*(MPcore_private_timer_ptr + 3)MPcore_private_timer_ptr[3]相同。 您取消引用递增的指针。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

  

块引用

     

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

是synonimum:

  

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