Timer_Module.c 790 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "Timer_Module.h"
  2. #include "CONFIG.h"
  3. // ¶¨Ê±Æ÷
  4. static uint32_t timer_ms = 0;
  5. void my_timer()
  6. {
  7. timer_ms++;
  8. }
  9. uint32_t get_time(void)
  10. {
  11. return timer_ms;
  12. }
  13. uint32_t get_time_diff(uint32_t time)
  14. {
  15. if(timer_ms >= time)
  16. {
  17. return timer_ms - time;
  18. }
  19. else
  20. {
  21. return 0xFFFFFFFF - time + timer_ms;
  22. }
  23. }
  24. uint32_t time_get_delay(struct TIMER_Struct * timer)
  25. {
  26. if(timer->flag == 0)
  27. {
  28. timer->flag = 1;
  29. timer->time = get_time();
  30. return 0;
  31. }
  32. else if(timer->flag == 1)
  33. {
  34. return get_time_diff(timer->time);
  35. }
  36. else
  37. {
  38. return 0;
  39. }
  40. }
  41. void time_clear(struct TIMER_Struct * timer)
  42. {
  43. timer->flag = 0;
  44. timer->time = 0;
  45. }
  46. // ÑÓʱº¯Êý
  47. void my_delay_ms(uint32_t ms)
  48. {
  49. struct TIMER_Struct timer = {
  50. .time = 0,
  51. .flag = 0,
  52. };
  53. while(time_get_delay(&timer) < ms){}
  54. }