167_FreeRTOS任务参数的使用

         首先第一步来分析一下官方的例程:

167_FreeRTOS任务参数的使用

         上面截图部分不是全部代码,但是应该基本上可以看明白问题了。这里面的Task函数其实只有一个,但是被创建了两次,不同的是两次创建使用了不同的参数。

         执行效果:

167_FreeRTOS任务参数的使用

         从效果看,两个参数都被打印出来了。可以看得出,其实调度中是有两个Task存在的。从这个行为上分析,可以把这个任务创建理解为这样一个模型:OS有一个调度查询的链表(姑且叫做链表吧,因为我最早接触的OS就是搜索任务链表),每次创建都是增加了一个链表上的节点,而链表节点挂载(形象理解,避免指针等不好想象的描述)着不同的任务函数。因此,链表上的节点只是一个执行触发的提醒机制,多次注册也不会是一种错误。

         接下来换个参数用法,看看这引用的功能。修改代码如下:

167_FreeRTOS任务参数的使用

其中,Task代码修改如下:

167_FreeRTOS任务参数的使用

软件运行效果如下:

167_FreeRTOS任务参数的使用

         从运行结果看得出,两个Task的计算都是正确的。为什么两个运行都不会导致彼此结果的变化呢?肯定是每个任务拥有自己独立的堆栈空间了,这个之前学习中也已经得到了相应的知识信息。