大家好、
我想在此要求一些澄清,当我研究 Bluetopia BTPSKRNL 文档时,BTPS_WaitEvent()指定以下内容:
以下函数负责等待指定的事件发出信号。 应该注意的是,信号具有特殊属性,因为多个线程可以等待事件信号发出,并且每当事件状态信号发出时,对 BTPS_WaitEvent()的所有调用都将返回 true。
然而、CC2564CSTBTBLESW 4.2.1.1将事件作为二进制信号量来实现,并使用 FreeRTOS xSemaphoreTake()调用来实现此方法。 xSemaphoreTake ()始终保持二进制信号量的状态为非信号、信号状态仅保留在返回值中。 因此、此 API 的抽象要求与它的实现方式之间存在直接矛盾。 由于这个问题似乎还没有被发现、这是否意味着 Bluetopia 的内部行为已经被改变以适应二进制信标的不同行为? 或者,此 API 的使用方式使其在结束时不会产生任何影响(例如,BTPS_WaitEvent()始终后跟 BTPS_ResetEvent()调用)?
对于记录、FreeRTOS 有一个同步对象、其行为与文档所期望的对象、即事件组(例如 xEventGroupWaitBits (event、1、pdFALSE、pdfFALSE、DecrementWait))。