Example #1
0
void stm32_timer_pm_event(EXO* exo)
{
    exo->timer.hpet_uspsc = stm32_timer_get_clock(exo, HPET_TIMER) / 1000000;
#if !(STM32_RTC_DRIVER)
    stm32_timer_stop(SECOND_PULSE_TIMER);
    stm32_timer_start(exo, SECOND_PULSE_TIMER, TIMER_VALUE_HZ, 1);
#endif //STM32_RTC_DRIVER
}
Example #2
0
void stm32_timer_pm_event(CORE* core)
{
    core->timer.hpet_uspsc = stm32_timer_get_clock(core, HPET_TIMER) / 1000000;
#if !(STM32_RTC_DRIVER)
    stm32_timer_stop(SECOND_PULSE_TIMER);
    stm32_timer_start(core, SECOND_PULSE_TIMER, TIMER_VALUE_HZ, 1);
#endif //STM32_RTC_DRIVER
}
Example #3
0
void stm32_timer_init(EXO* exo)
{
#if defined(STM32F1) || defined(STM32F2) || defined(STM32F4)
    exo->timer.shared1 = exo->timer.shared8 = 0;
#endif

    //setup HPET
    kirq_register(KERNEL_HANDLE, TIMER_VECTORS[HPET_TIMER], hpet_isr, (void*)exo);
    exo->timer.hpet_uspsc = stm32_timer_get_clock(exo, HPET_TIMER) / 1000000;
    stm32_timer_open(exo, HPET_TIMER, TIMER_ONE_PULSE | TIMER_IRQ_ENABLE | (13 << TIMER_IRQ_PRIORITY_POS));
    CB_SVC_TIMER cb_svc_timer;
    cb_svc_timer.start = hpet_start;
    cb_svc_timer.stop = hpet_stop;
    cb_svc_timer.elapsed = hpet_elapsed;
    ksystime_hpet_setup(&cb_svc_timer, exo);
#if !(STM32_RTC_DRIVER)
    kirq_register(KERNEL_HANDLE, TIMER_VECTORS[SECOND_PULSE_TIMER], second_pulse_isr, (void*)exo);
    stm32_timer_open(exo, SECOND_PULSE_TIMER, TIMER_IRQ_ENABLE | (13 << TIMER_IRQ_PRIORITY_POS));
    stm32_timer_start(exo, SECOND_PULSE_TIMER, TIMER_VALUE_HZ, 1);
#endif //STM32_RTC_DRIVER
}
Example #4
0
void stm32_timer_init(CORE *core)
{
#if defined(STM32F1) || defined(STM32F2) || defined(STM32F4)
    core->timer.shared1 = core->timer.shared8 = 0;
#endif

    //setup HPET
    irq_register(TIMER_VECTORS[HPET_TIMER], hpet_isr, (void*)core);
    core->timer.hpet_uspsc = stm32_timer_get_clock(core, HPET_TIMER) / 1000000;
    stm32_timer_open(core, HPET_TIMER, TIMER_ONE_PULSE | TIMER_IRQ_ENABLE | (13 << TIMER_IRQ_PRIORITY_POS));
    CB_SVC_TIMER cb_svc_timer;
    cb_svc_timer.start = hpet_start;
    cb_svc_timer.stop = hpet_stop;
    cb_svc_timer.elapsed = hpet_elapsed;
    systime_hpet_setup(&cb_svc_timer, core);
#if !(STM32_RTC_DRIVER)
    irq_register(TIMER_VECTORS[SECOND_PULSE_TIMER], second_pulse_isr, (void*)core);
    stm32_timer_open(core, SECOND_PULSE_TIMER, TIMER_IRQ_ENABLE | (13 << TIMER_IRQ_PRIORITY_POS));
    stm32_timer_start(core, SECOND_PULSE_TIMER, TIMER_VALUE_HZ, 1);
#endif //STM32_RTC_DRIVER
}
Example #5
0
static inline void stm32_timer_setup_us(EXO* exo, TIMER_NUM num, unsigned int us)
{
    unsigned int clk;
    clk = stm32_timer_get_clock(exo, num) / 1000000 * us;
    stm32_timer_setup_clk(num, clk);
}
Example #6
0
static inline void stm32_timer_setup_hz(EXO* exo, TIMER_NUM num, unsigned int hz)
{
    unsigned int clk;
    clk = stm32_timer_get_clock(exo, num) / hz;
    stm32_timer_setup_clk(num, clk);
}
Example #7
0
static inline void stm32_timer_setup_hz(CORE* core, TIMER_NUM num, unsigned int hz)
{
    unsigned int clk;
    clk = stm32_timer_get_clock(core, num) / hz;
    stm32_timer_setup_clk(num, clk);
}