Esempio n. 1
0
/** 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);
}
Esempio n. 2
0
void GPT1_IRQHandler(void)
{
    if (GPT_GetStatusFlags(GPT1, kGPT_OutputCompare1Flag) != 0)
    {
        GPT_ClearStatusFlags(GPT1, kGPT_OutputCompare1Flag);
        rt_device_hwtimer_isr(&GPT_timer1);
    }

    /* Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F, Cortex-M7, Cortex-M7F Store immediate overlapping
      exception return operation might vector to incorrect interrupt */
#if defined __CORTEX_M && (__CORTEX_M == 4U || __CORTEX_M == 7U)
    __DSB();
#endif
}
Esempio n. 3
0
static void gpt_isr(void)
{
    GPT_ClearStatusFlags(GPT2, kGPT_OutputCompare1Flag);
    GPT_DisableInterrupts(GPT2, kGPT_OutputCompare1InterruptEnable);
    lp_ticker_irq_handler();
}
Esempio n. 4
0
/** Clear the low power ticker interrupt
 *
 */
void lp_ticker_clear_interrupt(void)
{
    GPT_ClearStatusFlags(GPT2, kGPT_OutputCompare1Flag);
}