dev_task.c 827 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "dev_task.h"
  2. #include <stdint.h>
  3. const uint16_t dev_task_cycle_tab[8] = {
  4. 5, // task0 周期5ms;
  5. 10, // task1 周期10ms;
  6. 50, // task2 周期50ms;
  7. 100, // task3 周期100ms;
  8. 200, // task4 周期200ms;
  9. 500, // task5 周期500ms;
  10. 1000, // task6 周期1000ms;
  11. 2000, // task7 周期2000ms;
  12. };
  13. // 定义任务循环标志位
  14. dev_task_flag_un dev_task_flag;
  15. void dev_task_clock(void)
  16. {
  17. static volatile uint32_t sys_tick_count = 0;
  18. uint8_t i = 0;
  19. sys_tick_count++;
  20. for (i = 0; i < TASK_MASK_QTY; i++)
  21. {
  22. if (sys_tick_count % dev_task_cycle_tab[i] == 0x00)
  23. {
  24. dev_task_flag.all |= 0x01 << i;
  25. }
  26. }
  27. if (sys_tick_count > 4000000000)
  28. {
  29. sys_tick_count = 0;
  30. }
  31. }