微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > ICall_wait诸多疑问

ICall_wait诸多疑问

时间:10-02 整理:3721RD 点击:

各位好,

我在看SimpleBLEPeripheral工程中看见等待信号量的函数有一些疑问:

1.ICall_Errno errno = ICall_wait(ICALL_TIMEOUT_FOREVER);

这个函数没有带SEM handle ,任何信号量都能触发它?当信号量很多时,会不会造成任务混乱。

2.我还想问一下,CC2640 的RTOS的任务优先级是序号越高优先级越高,还是序号越低优先级越低?

Q1: 有带,可以往下看到ICALL.c里的ICall_primWait()函数。 使用的是信号量。底层用了队列来管理具体的消息,可以看ICall_primFetchMsg函数

Q2: the bigger the number, the higher the priority 

HI TY,

           底层确实有Handle,但是应用层没有呀,所有的Task都执行ICall_wait不带任何 ID ,随意一个信号量就能触发。

例如:TaskA 延迟 5s后,发送Sem1,触发TaskB

            TaskC 延迟 10s后,发送Sem2,触发TaskD

由于TaskB 和TaskD都判断ICall_wait而已,在5s的时候,会不会SEM1 触发TaskD???  在  10s的时候,会不会SEM2 触发 TaskB ??

要是不会,如何区分是SEM1 还是SEM2?

下面是ICall_primWait函数的一些语句,可以看到handle在此获得,并保存到ICall_TaskEntry结构

Task_Handle taskhandle = Task_self();
ICall_TaskEntry *taskentry = ICall_searchTask(taskhandle);

HI TY,

      我明白代码中的意思了,实际上为了区分是哪个任务发出来的SEM,借助了events全局变量

你好,请问哪个文档有详细介绍icall这块的?请告知,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top