|
void gpt_timeout_cb(void *parameter)
{
IRQ_GPT_MASK;
GPTI_StopItem(Idra_handle);
Timeoutcnt++;
IRQ_GPT_UNMASK;
if(Timeoutcnt>3000)
{
Valid = 1;
GPTI_StopItem(Gpt_handle);
}
else
GPTI_StartItem(Gpt_handle,
1,
gpt_timeout_cb
NULL);
}
void foo_func()
{
Valid=0;
CTIRQ_GPT_MaskAll(&val); //mask all IRQ but GPT
GPTI_StartItem(Gpt_handle,
1,
gpt_timeout_cb
NULL);
while(!Valid){
//方案一[/COLOR]
__asm
{
nop
}
//方案二[/COLOR]
NOP_NOP();
}
CTIRQ_GPT_Restore(&val);
Trace_log("foo_func end\r\n");
}
void NOP_NOP(void)
{
__asm
{
nop
nop
nop
nop
nop
}
}
代码如上,GPT每单位62.5us,大家看看上述方案一、二运行结果有何不同?
为什么? |
|