TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3200的多任务。

看过SYS/BIOS (TI-RTOS Kernel) v6.45 User's Guide后,对task和Semapore有了一定的了解。现在有个疑问

假如CC3200有两个task:task1、task2,以下这两个task的优先级相同,

情况一:task1先于task2创建,那么运行时应该是task1先运行完了,再运行task2,还是task1先运行一段时间然后task2再运行一段时间,交替运行。

情况二:task1先于task2创建,先运行的task1被Semapore_pend所阻塞(这里Semapore被初始化为0了),接下来task2运行,期间它向task1进行了Semapore_post操作,此时task2是继续先运行完了,再运行task1?还是先运行taks1再运行taks2?(如果taks1的优先级高,肯定毫无疑问是先运行taks1,但优先级相同,task1先于task2创建这种情况,我就不知道了)

baokun hu:

回复 Yue TANG:

我建了两个任务,一个就是sdk的demo中的wlan_ap,优先级为15,另外还建了一个任务,优先级只有1,按理说应该把demo中的wlan_ap运行完了,再运行另外一个任务,可是怎么wlan_ap任务每次走到ConfigureSimpleLinkToDefaultState函数的里面时,都会去执行另外一个任务呢(因为我在另外一个任务的开头是打印信息,所以一下就能看出进了任务2中),而且就执行了很短的两句话,马上就回到任务1的wlan_ap中,然后就在这里正常执行了,有点儿搞不明白究竟在ConfigureSimpleLinkToDefaultState里发生了什么导致它往低优先级的任务中走?并且很短时间后就又回来了(我也没有使用Semaphores这类的东西啊,搞不懂)。

baokun hu:

回复 Yue TANG:

好像还真是这样,刚才查了一下,里面调用了一个函数sl_WlanPolicySet,有这么个参数SL_POLICY_PM, defines a power management policy for Station mode only:看来确实隐含了osi_Sleep(),非常感谢,谢谢。

赞(0)
未经允许不得转载:TI中文支持网 » CC3200的多任务。
分享到: 更多 (0)