#include "pt_timer.h" #include "task.h" #define clock_time get_system_ms //启动定时器 void timer_set(struct timer *t, unsigned long interval) { t->interval = interval; // 存储需要延时的us数 t->start = clock_time(); //获取当前的us值 } // 定时器超时判断 unsigned char timer_expired(struct timer *t) { unsigned long now = clock_time() ; unsigned long err = now - t->start; // clock_time()会获取当前的tick值, 如果当前值-开始值超过了延时的tick数, 那么就是超时了 unsigned char overTime = err>= t->interval; _nop_(); return overTime; // 思考:溢出会如何呢? //没问题,负数-正数仍然是一个正数 } /* //延时,必须是开中断状态下 void delay_ms(int t_ms) { struct pt pt1; static struct timer input_timer; timer_set(&input_timer,t_ms); while(!timer_expired(&input_timer)); } */