tr_timer.c 901 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * tr_timer.c
  3. *
  4. * Created on: 2025年7月25日
  5. * Author: 龙三郎
  6. * 定时不大准,需要精准定时,试用芯片提供的定时器
  7. */
  8. #include "tr_timer.h"
  9. // 定时器
  10. static unsigned int BaseTime = 0;
  11. void BaseTimeIncremental(void)
  12. {
  13. BaseTime++;
  14. }
  15. unsigned int GetPassedTime(struct TimerStruct * timer)
  16. {
  17. if(timer->flag == 0)
  18. {
  19. timer->flag = 1;
  20. timer->time = BaseTime;
  21. return 0;
  22. }
  23. else if(timer->flag != 1)
  24. {
  25. return 0;
  26. }
  27. else if(BaseTime >= timer->time)
  28. {
  29. return BaseTime - timer->time;
  30. }
  31. else
  32. {
  33. return 0xFFFFFFFF - timer->time + BaseTime;
  34. }
  35. }
  36. void ClearTimer(struct TimerStruct * timer)
  37. {
  38. timer->flag = 0;
  39. timer->time = 0;
  40. }
  41. // 延时函数
  42. void DelayMs(unsigned int ms)
  43. {
  44. struct TimerStruct timer = {
  45. .time = 0,
  46. .flag = 0,
  47. };
  48. while(GetPassedTime(&timer) < ms){}
  49. }