sched_timer.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #include "bsp/sched_timer.h"
  2. void sched_timer_enable(u32 us) {
  3. timer_parameter_struct timer_initpara;
  4. rcu_periph_clock_enable(SCHED_TIMER_RCU);
  5. timer_deinit(SCHED_TIMER);
  6. /* initialize TIMER init parameter struct */
  7. timer_struct_para_init(&timer_initpara);
  8. /* TIMER1 configuration */
  9. timer_initpara.prescaler = TIM_CLOCK_MHz;
  10. timer_initpara.alignedmode = TIMER_COUNTER_EDGE;
  11. timer_initpara.counterdirection = TIMER_COUNTER_UP;
  12. timer_initpara.period = us;//400;
  13. timer_initpara.clockdivision = TIMER_CKDIV_DIV1;
  14. timer_initpara.repetitioncounter = 0;
  15. timer_init(SCHED_TIMER, &timer_initpara);
  16. timer_counter_value_config(SCHED_TIMER,0);
  17. timer_interrupt_flag_clear(SCHED_TIMER, TIMER_INT_UP);
  18. timer_interrupt_enable(SCHED_TIMER, TIMER_INT_UP);
  19. nvic_irq_enable(SCHED_TIMER_IRQ, SCHED_TIMER_IRQ_PRIORITY, 0);
  20. timer_enable(SCHED_TIMER);
  21. }
  22. __weak void Sched_MC_mTask(void) {}
  23. void SCHED_TIMER_IRQHandler(void) {
  24. if(SET == timer_interrupt_flag_get(SCHED_TIMER, TIMER_INT_UP)) {
  25. timer_interrupt_flag_clear(SCHED_TIMER, TIMER_INT_UP);
  26. Sched_MC_mTask();
  27. }
  28. }