#include "driver_timer.h" static uint32_t tick0 = 0; static uint32_t tick1 = 0; static uint8_t tim0_run_num = 0; attribute((section("ram_code"))) void timer0_isr_ram(void) { timer_clear_interrupt(TIMER0); co_delay_10us(1); //timer_reload(TIMER0); if(tick0>10000) //1s { tick0 = 0; tim0_run_num++; if(tim0_run_num >= 4) timer_stop(TIMER0); co_printf("hwt0_us:%d,%d\r\n",timer_get_current_value(TIMER0),timer_get_load_value(TIMER0)); } else tick0++; } attribute((section("ram_code"))) void timer1_isr_ram(void) { timer_clear_interrupt(TIMER1); co_delay_10us(1); //timer_reload(TIMER1); if(tick1>20000) //4s { timer_stop(TIMER1); co_printf("hwt1_us:%d,%d\r\n",timer_get_current_value(TIMER1),timer_get_load_value(TIMER1)); } else tick1++; } void demo_timer(void) { co_printf("hardware timer demo\r\n"); tick1 = 0; tick0 = 0; tim0_run_num = 0; timer_init(TIMER0,100,TIMER_PERIODIC); timer_run(TIMER0); timer_init(TIMER1,200,TIMER_PERIODIC); timer_run(TIMER1); NVIC_SetPriority(TIMER0_IRQn, 2); NVIC_EnableIRQ(TIMER0_IRQn); NVIC_SetPriority(TIMER1_IRQn, 2); NVIC_EnableIRQ(TIMER1_IRQn); }