tr_timer.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * tr_timer.c
  3. *
  4. * Created on: 2025年7月25日
  5. * Author: 龙三郎
  6. * 定时不大准,需要精准定时,试用芯片提供的定时器
  7. */
  8. #include "tr_timer.h"
  9. #include "nim_config.h"
  10. // 定时器
  11. unsigned volatile int TocuhTime = TOUCH_TIME; //触控时间
  12. unsigned volatile char TocuhTrigger = 0; //触控触发
  13. unsigned int WatchTime = WATCH_TIME; //触控时间
  14. // 定时器
  15. static unsigned int BaseTime = 0;
  16. void BaseTimeIncremental(void)
  17. {
  18. BaseTime++;
  19. if(TocuhTrigger && TocuhTime--)
  20. {
  21. if(TocuhTime == 0)
  22. {
  23. TocuhTrigger = 0;
  24. }
  25. }
  26. if(!(WatchTime--))
  27. {
  28. WatchTime = WATCH_TIME;
  29. ConsolePuts("\n main fun not go out \n", -1);
  30. }
  31. }
  32. unsigned int GetPassedTime(struct TimerStruct * timer)
  33. {
  34. if(timer->flag == 0)
  35. {
  36. timer->flag = 1;
  37. timer->time = BaseTime;
  38. return 0;
  39. }
  40. else if(timer->flag != 1)
  41. {
  42. return 0;
  43. }
  44. else if(BaseTime >= timer->time)
  45. {
  46. return BaseTime - timer->time;
  47. }
  48. else
  49. {
  50. return 0xFFFFFFFF - timer->time + BaseTime;
  51. }
  52. }
  53. void ClearTimer(struct TimerStruct * timer)
  54. {
  55. timer->flag = 0;
  56. timer->time = 0;
  57. }
  58. // 延时函数
  59. void DelayMs(unsigned int ms)
  60. {
  61. struct TimerStruct timer = {
  62. .time = 0,
  63. .flag = 0,
  64. };
  65. while(GetPassedTime(&timer) < ms){}
  66. }
  67. /**
  68. * 初始化看门时间
  69. */
  70. void InitWatchTime()
  71. {
  72. WatchTime = WATCH_TIME;
  73. }