|
发表于 2018-10-19 18:50:45
|
显示全部楼层
本帖最后由 dxgdsx 于 2018-10-19 18:52 编辑
- 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;
- }
复制代码 |
|