/* * tr_timer.c * * Created on: 2025年7月25日 * Author: 龙三郎 * 定时不大准,需要精准定时,试用芯片提供的定时器 */ #include "tr_timer.h" #include "nim_config.h" // 定时器 unsigned volatile int TocuhTime = TOUCH_TIME; //触控时间 unsigned volatile char TocuhTrigger = 0; //触控触发 unsigned int WatchTime = WATCH_TIME; //触控时间 // 定时器 static unsigned int BaseTime = 0; void BaseTimeIncremental(void) { BaseTime++; if(TocuhTrigger && TocuhTime--) { if(TocuhTime == 0) { TocuhTrigger = 0; } } if(!(WatchTime--)) { WatchTime = WATCH_TIME; ConsolePuts("\n main fun not go out \n", -1); } } unsigned int GetPassedTime(struct TimerStruct * timer) { if(timer->flag == 0) { timer->flag = 1; timer->time = BaseTime; return 0; } else if(timer->flag != 1) { return 0; } else if(BaseTime >= timer->time) { return BaseTime - timer->time; } else { return 0xFFFFFFFF - timer->time + BaseTime; } } void ClearTimer(struct TimerStruct * timer) { timer->flag = 0; timer->time = 0; } // 延时函数 void DelayMs(unsigned int ms) { struct TimerStruct timer = { .time = 0, .flag = 0, }; while(GetPassedTime(&timer) < ms){} } /** * 初始化看门时间 */ void InitWatchTime() { WatchTime = WATCH_TIME; }