ATSAM3X8-定时器
U8 ms_ticks;
void SysTick_Handler(void)
{if (ms_ticks==1){LED0_ON;ms_ticks=0;}else{LED0_OFF;ms_ticks=1;}
}
void init_systick(void) {if (SysTick_Config(84000000 / 1000)) {while (1); }NVIC_SetPriority(SysTick_IRQn, 15);
}
void init_tc_interrupt(void) {pmc_enable_periph_clk(ID_TC0);tc_init(TC0, 0,TC_CMR_WAVE| TC_CMR_WAVSEL_UP_RC| TC_CMR_TCCLKS_TIMER_CLOCK1 );uint32_t rc_value = (sysclk_get_cpu_hz() / 2) / 1000; tc_write_rc(TC0, 0, rc_value);tc_enable_interrupt(TC0, 0, TC_IER_CPCS);NVIC_EnableIRQ(TC0_IRQn);NVIC_SetPriority(TC0_IRQn, 5);tc_start(TC0, 0);
}
void TC0_Handler(void) {uint32_t status = tc_get_status(TC0, 0);if (status & TC_SR_CPCS) {if (ms_ticks==1){LED0_ON;ms_ticks=0;}else{LED0_OFF;ms_ticks=1;}}
}