#include "../../include/ls1x.h" #include "../../include/Config.h" #include "ls1c102_ptimer.h" #include "1c102_mytimer.h" #define TIMER_NUM 100 Timertask_Typedef mytimer_que[MYTIME_QUEUE_NUMBER]={0}; char Reg_timer_task(unsigned int exe_time, int (*handle_fun)(void)) { unsigned char i = 0; for(i=0; i<=MYTIME_QUEUE_NUMBER-1; ++i) { if(!mytimer_que[i].status){ mytimer_que[i].que_number = i; mytimer_que[i].status = MYTIME_TASK_ENABLE; mytimer_que[i].execute_time = exe_time/TIMER_NUM; mytimer_que[i].handle_fun = handle_fun; break; } else { if (i == MYTIME_QUEUE_NUMBER) { printf("The queue is full.\n"); return -1; } } } return mytimer_que[i].que_number; } void Del_timer_task(unsigned char que_num) { mytimer_que[que_num].status = MYTIME_TASK_DISABLE; return; } void Timer_IRQ_Handle() { unsigned char i = 0; for(i=0; i<=MYTIME_QUEUE_NUMBER-1; ++i) { if(mytimer_que[i].status == MYTIME_TASK_ENABLE) { if(--mytimer_que[i].execute_time <= 0) { mytimer_que[i].handle_fun(); Del_timer_task(mytimer_que[i].que_number); /*执行完删除该定时任务*/ } } } return; } unsigned int SystemFreq; static void timer_start() { TIM_InitTypeDef timer_info; TIM_StructInit(&timer_info); timer_info.Clock_Freq = SystemFreq; timer_info.TIME_CMP = ((timer_info.Clock_Freq*TIMER_NUM)/1000); //(1ms*TIMER_NUM)ms timer_info.TIME_STP = ((timer_info.Clock_Freq*TIMER_NUM)/1000); TIM_Init(&timer_info); return; } void Timer_Init() { int i = 0; for(i=0; i