2019-12-16 22:39发布
dxgdsx 发表于 2018-10-19 18:50
bbandpp 发表于 2018-10-19 19:08 感谢,跟我设想的也差不多。 不过感觉不能用到for循环,要用分时执行任务,任务完成后做好标志。 ...
最多设置5个标签!
- typedef struct
- {
- uint8_t task_id;
- void(*task_func_ptr)(void *data);
- }task_t;
- void task1_func(void *data)
- {
- //do something
- }
- void task2_func(void *data)
- {
- //do something
- }
- void task3_func(void *data)
- {
- //do something
- }
- void task4_func(void *data)
- {
- //do something
- }
- void task5_func(void *data)
- {
- //do something
- }
- task_t task_list[5] = {
- { 1, task1_func },
- { 2, task2_func },
- { 3, task3_func },
- { 4, task4_func },
- { 5, task5_func }
- };
- task_t *pTask = &task_list[0];
- int main(void)
- {
- int data;
- uint8_t cmd_group[10]; //
- uint8_t i, cmd;
- while (1)
- {
- //从上位机获取命令组
- receive_cmd_from_pc(cmd_group);
- for (i = 0; i < 10; i++)
- {
- //获取单个小任务对应的命令
- cmd = cmd_group[i];
- //执行该命令对应的小任务
- (pTask + cmd)->task_func_ptr(&data);
- }
- }
- return 0;
- }
复制代码感谢,跟我设想的也差不多。
不过感觉不能用到for循环,要用分时执行任务,任务完成后做好标志。
分时执行任务是什么意思啊不是顺序执行任务序列吗?
一周热门 更多>