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

2019-12-16 22:39发布

各个任务由上位机进行编辑发送过来保存,单片机进行各个任务处理。
一直是裸奔的,不知道这样裸奔好不好操作。没思路了。
TIM截图20181018105932.png (19.22 KB, 下载次数: 0) 下载附件 2018-10-18 11:07 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
dxgdsx
1楼-- · 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. }
复制代码
bbandpp
2楼-- · 2019-12-18 00:54
dxgdsx 发表于 2018-10-19 18:50

感谢,跟我设想的也差不多。
不过感觉不能用到for循环,要用分时执行任务,任务完成后做好标志。
dxgdsx
3楼-- · 2019-12-18 05:08
 精彩回答 2  元偷偷看……
nanfang2000
4楼-- · 2019-12-18 08:29
bbandpp 发表于 2018-10-19 19:08
感谢,跟我设想的也差不多。
不过感觉不能用到for循环,要用分时执行任务,任务完成后做好标志。 ...

分时执行任务是什么意思啊不是顺序执行任务序列吗?
kebaojun305
5楼-- · 2019-12-18 10:38
那就上个 os  用最简单的任务调度就行了。
gaowh
6楼-- · 2019-12-18 11:53
楼主这样用链表啊,上位机发送过来就增长,然后遍历运行就可

一周热门 更多>