求助流水线型的单片机任务程序架构怎么写好

2019-12-16 22:39发布

各个任务由上位机进行编辑发送过来保存,单片机进行各个任务处理。
一直是裸奔的,不知道这样裸奔好不好操作。没思路了。
TIM截图20181018105932.png (19.22 KB, 下载次数: 0) 下载附件 2018-10-18 11:07 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
dxgdsx
2019-12-17 22:16
本帖最后由 dxgdsx 于 2018-10-19 18:52 编辑
  1. typedef struct  
  2. {
  3.         uint8_t task_id;
  4.         void(*task_func_ptr)(void *data);
  5. }task_t;


  6. void task1_func(void *data)
  7. {
  8.         //do something
  9. }

  10. void task2_func(void *data)
  11. {
  12.         //do something
  13. }

  14. void task3_func(void *data)
  15. {
  16.         //do something
  17. }

  18. void task4_func(void *data)
  19. {
  20.         //do something
  21. }

  22. void task5_func(void *data)
  23. {
  24.         //do something
  25. }

  26. task_t task_list[5] = {
  27.                 { 1, task1_func },
  28.                 { 2, task2_func },
  29.                 { 3, task3_func },
  30.                 { 4, task4_func },
  31.                 { 5, task5_func }
  32. };

  33. task_t *pTask = &task_list[0];

  34. int main(void)
  35. {
  36.         int data;
  37.         uint8_t cmd_group[10]; //
  38.         uint8_t i, cmd;

  39.         while (1)
  40.         {
  41.                 //从上位机获取命令组
  42.                 receive_cmd_from_pc(cmd_group);

  43.                 for (i = 0; i < 10; i++)
  44.                 {
  45.                         //获取单个小任务对应的命令
  46.                         cmd = cmd_group[i];
  47.                         //执行该命令对应的小任务
  48.                         (pTask + cmd)->task_func_ptr(&data);
  49.                 }
  50.         }

  51.         return 0;
  52. }
复制代码

一周热门 更多>