/* * Set up timer interrupt, and return the current time in seconds. */ static void __init emxx_init_timer(void) { timer_set_clock(TIMER_INIT); #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST local_timer_setup(); #endif setup_irq(tm_reg[TIMER_SYSTEM].irq, &emxx_system_timer_irq); emxx_clocksource_init(); emxx_clockevents_init(tm_reg[TIMER_SYSTEM].irq); }
static void timers_init() { unsigned i; // Enable clocks. RCC_APB2PeriphClockCmd( RCC_APB2Periph_TIM1, ENABLE ); RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM2, ENABLE ); RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3, ENABLE ); RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM4, ENABLE ); RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM5, ENABLE ); // Configure timers for( i = 0; i < NUM_TIMER; i ++ ) { timer_set_clock( i, TIM_STARTUP_CLOCK ); } }