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

CC1310 接收队列

请问在执行了RFQueue_nextEntry()后,队列里接收的内容会被清空吗?

Viki Shi:

不会,但是默认设置RFQueue限制为两个entry:
#define NUM_DATA_ENTRIES2/* NOTE: Only two data entries supported at the moment */

user4959119:

回复 Viki Shi:

恩,两个entry是什么意思呢?相当于两个缓冲不断来回切换吗?

Viki Shi:

回复 user4959119:

可以这么理解,超过两个就会被覆盖

user4959119:

回复 Viki Shi:

entry能不能改成更多,比如6? 在RF接收中断里能不能调用Semaphore_pend(semHandle,0);?

Viki Shi:

回复 user4959119:

试试在RFQueue_defineQueue里修改:
for (i = 0; i < numEntries; i++){if(i){buf = &(*buf)+((RF_QUEUE_DATA_ENTRY_HEADER_SIZE+length+pad));}((rfc_dataEntry_t*)buf)->status= DATA_ENTRY_PENDING;// Pending – starting state((rfc_dataEntry_t*)buf)->config.type= DATA_ENTRY_TYPE_GEN;// General Data Entry((rfc_dataEntry_t*)buf)->config.lenSz= 0;// No length indicator byte in data((rfc_dataEntry_t*)buf)->length= length;// Total length of data field
((rfc_dataEntryGeneral_t*)buf)->pNextEntry = &(((rfc_dataEntryGeneral_t*)buf)->data)+length+pad;}

user4959119:

回复 Viki Shi:

恩,那RF接收中断里能不能调用Semaphore_pend(semHandle,0);呢?

Viki Shi:

回复 user4959119:

中断里不建议调用Semaphore_pend操作

user4959119:

回复 Viki Shi:

我等待时间为0还不行?

Viki Shi:

回复 user4959119:

中断函数里不推荐有阻塞操作,这是共识

user4959119:

回复 Viki Shi:

恩这个我也知道,我的目的是保护自己的RF接收缓冲的,这个缓冲接收RF数据,后面又要解析它,所以为了保护它我用了一个信号量。如果接收的速率大于我解析的时间,那么我在RF接收中断里用条件if(Semaphore_pend(semHandle,0)== TRUE) restore;不至于缓冲里的数据被破坏。

赞(0)
未经允许不得转载:TI中文支持网 » CC1310 接收队列
分享到: 更多 (0)