soft_time.c 959 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "hard_system_time.h"
  2. #include "soft_time.h"
  3. //系统时间定时器初始化
  4. void system_time_initial(void) { system_time_init(); }
  5. //获取系统时间
  6. unsigned int micros(void) { return hard_micros(); }
  7. //获取两次时间差,同时处理超过72分钟重新计时的错误问题。单位us
  8. #define ERR_DT 2500
  9. unsigned int time_interval(unsigned int time_cur, unsigned int *time_last)
  10. {
  11. unsigned int interval = time_cur - *time_last;
  12. if (time_cur < *time_last)
  13. {
  14. *time_last = time_cur;
  15. interval = ERR_DT;
  16. }
  17. return interval;
  18. }
  19. /*
  20. 测试发现,32位寄存器的CPU上两个时间差不会出现一个循环后卡死的情况。//10081142 -
  21. 4105048205 = 200000233;
  22. 测试micros() = 10081142(0X 99 D376), system_time = 4105048205(0X F4AE 108D),
  23. micros() - system_time = 200000233.
  24. */
  25. //试图解决32位定时器只能计时72分钟,用64位的变量来累计计时
  26. void time_hookfunction(void) {}