各位好,
我在看SimpleBLEPeripheral工程中看见等待信号量的函数有一些疑问:
1.ICall_Errno errno = ICall_wait(ICALL_TIMEOUT_FOREVER);
这个函数没有带SEM handle ,任何信号量都能触发它?当信号量很多时,会不会造成任务混乱。
2.我还想问一下,CC2640 的RTOS的任务优先级是序号越高优先级越高,还是序号越低优先级越低?
Yue TANG:
Q1: 有带,可以往下看到ICALL.c里的ICall_primWait()函数。 使用的是信号量。底层用了队列来管理具体的消息,可以看ICall_primFetchMsg函数
Q2: the bigger the number, the higher the priority
Frank Mei:
回复 Yue TANG:
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?
Frank Mei:
回复 Yue TANG:
HI TY,
我明白代码中的意思了,实际上为了区分是哪个任务发出来的SEM,借助了events全局变量
Jason hu1:
回复 Yue TANG:
你好,请问哪个文档有详细介绍icall这块的?请告知,谢谢