This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1310的RX和TX出现EasyLink_Status_Busy_Error

Other Parts Discussed in Thread: CC1310

我使用的是CC1310+EasyLink,RX和TX分别属于不同的任务,并且用互斥量进行RF的互斥,一直处于RX状态,有数据发送时再通过互斥量进入TX,但如果TX任务中不首先使用EasyLink_abort(),那TX就会经常出现EasyLink_Status_Busy_Error。代码结构如下:

int rf_send(const rf_packet_t*data,unsigned int len)
{
int ret=0;

if(Semaphore_pend(rfDoneSem,BIOS_WAIT_FOREVER) == FALSE) //一直等待互斥量
{

}else{
EasyLink_abort(); //如果不使用,则会出现EasyLink_Status_Busy_Error
}

// ret=EasyLink_transmitAsync(&packet, gw_rf_send_callback);
ret=EasyLink_transmit(data);
if(ret!=EasyLink_Status_Success)
{
ret=-1;
}else{
ret=len;
}
Semaphore_post(rfDoneSem);

}

int rf_recv_async(void)
{
int ret=0;
if(Semaphore_pend(rfDoneSem, (100000 / Clock_tickPeriod)) == FALSE) //等待互斥量
{
return -1;
}
#if 0
if( EasyLink_setCtrl(EasyLink_Ctrl_AsyncRx_TimeOut,300000 / Clock_tickPeriod)!=EasyLink_Status_Success)
{
// System_abort("EasyLink_setCtrl failed");
}
#endif

ret=EasyLink_receiveAsync(gw_rf_rx_callback,0);

if(ret!=EasyLink_Status_Success)
{
ret= -1;
}
Semaphore_post(rfDoneSem);
return ret;

}

x 出现错误。请重试或与管理员联系。