icfans

60平台如何产生微秒级别的中断

0
阅读(2517)

[DESCRIPTION]
外部设备应用,常需要产生比毫秒精度更高的中断
可以使用GPT2,请对照datasheet配置CLK
精度可达60us一次
参考代码如下


[SOLUTION]


Include头文件: dcl_gpt_hw.h


DCL_HANDLE gpth = DCL_HANDLE_INVALID;


void dummy_gpt_cb(DCL_EVENT a)


{
Kal_Timer_Interrupt();
return;
}
void dummy_gpt_init(void)
{
if (gpth == DCL_HANDLE_INVALID) {
HGPT_CTRL_RESET_T reset_data = { 5*16, DCL_TRUE };
HGPT_CTRL_CLK_T clock_data = { CLK_16K };
gpth = DclHGPT_Open(GPT2, FLAGS_NONE);
DclHGPT_RegisterCallback(gpth, EVENT_HGPT_TIMEOUT, dummy_gpt_cb);
DclHGPT_Control(gpth, HGPT_CMD_CLK, &clock_data);
DclHGPT_Control(gpth, HGPT_CMD_RESET, &reset_data);
DclHGPT_Control(gpth, HGPT_CMD_START, NULL);
dummy_init=1;
}
}

ICFANS