#include "bsp/bsp_driver.h"

void sched_timer_enable(u32 us) {

    crm_periph_clock_enable(SCHED_TIMER_RCU, TRUE);

    tmr_reset(SCHED_TIMER);

	tmr_base_init(SCHED_TIMER, us-1, TIM_CLOCK_MHz-1);
	tmr_cnt_dir_set(SCHED_TIMER, TMR_COUNT_UP);
	tmr_clock_source_div_set(SCHED_TIMER, TMR_CLOCK_DIV1);
	tmr_counter_value_set(SCHED_TIMER, 0);

	tmr_flag_clear(SCHED_TIMER, TMR_OVF_FLAG);
	tmr_interrupt_enable(SCHED_TIMER, TMR_OVF_INT, TRUE);
	nvic_irq_enable(SCHED_TIMER_IRQ, SCHED_TIMER_IRQ_PRIORITY, 0);
	tmr_counter_enable(SCHED_TIMER, TRUE);
}
__weak void Sched_MC_mTask(void) {}
void SCHED_TIMER_IRQHandler(void) {
	if(SET == tmr_flag_get(SCHED_TIMER, TMR_OVF_FLAG)) {
		tmr_flag_clear(SCHED_TIMER, TMR_OVF_FLAG);
		Sched_MC_mTask();
	}
}
