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+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;
}