/** Set interrupt for specified timestamp * * @param timestamp The time in ticks to be set */ void lp_ticker_set_interrupt(timestamp_t timestamp) { if (timestamp == 0) { timestamp = 1; } GPT_StopTimer(GPT2); GPT_SetOutputCompareValue(GPT2, kGPT_OutputCompare_Channel1, timestamp); GPT_ClearStatusFlags(GPT2, kGPT_OutputCompare1Flag); GPT_EnableInterrupts(GPT2, kGPT_OutputCompare1InterruptEnable); GPT_StartTimer(GPT2); }
static rt_err_t rt1052_hwtimer_start(rt_hwtimer_t *timer, rt_uint32_t cnt, rt_hwtimer_mode_t mode) { GPT_Type *hwtimer_dev; hwtimer_dev = (GPT_Type *)timer->parent.user_data; RT_ASSERT(timer != RT_NULL); hwtimer_dev->CR |= (mode == HWTIMER_MODE_PERIOD) ? GPT_CR_FRR_MASK : 0U; GPT_SetOutputCompareValue(hwtimer_dev, kGPT_OutputCompare_Channel1, cnt); GPT_EnableInterrupts(hwtimer_dev, kGPT_OutputCompare1InterruptEnable); NVIC_Configuration(); GPT_StartTimer(hwtimer_dev); return RT_EOK; }