基于easylink我将射频收发分为了两个任务:
接收正常,但是发射发不出去,发射函数可以执行,但是根本进不去回调函数,
测试发射任务中的 if(EasyLink_abort() == EasyLink_Status_Success)
返回的是4,也就是EasyLink_Status_Cmd_Error = 4
请问这是什么原因?
发射任务代码如下:
while(1) {Semaphore_pend(mySem, BIOS_WAIT_FOREVER);EasyLink_TxPacket txPacket = { {0}, 0, 0, {0} };/* Create packet with incrementing sequence number and random payload */memcpy(&txPacket.payload[0],UART_RX,len);txPacket.len = len;txPacket.dstAddr[0] = 0xaa;txPacket.absTime = 5; #ifdef RFEASYLINKTX_ASYNCEasyLink_transmitAsync(&txPacket,txDoneCb);if(Semaphore_pend(txDoneSem, (300000 / Clock_tickPeriod)) == FALSE){/* TX timed out, abort */if(EasyLink_abort() == EasyLink_Status_Success){/** Abort will cause the txDoneCb to be called, and the txDoneSem ti* Be released. So we must consume the txDoneSem* */Semaphore_pend(txDoneSem, BIOS_WAIT_FOREVER);}}
接收任务代码如下:
while(1){EasyLink_receiveAsync(rxDoneCb, 0);if(Semaphore_pend(rxDoneSem, (300000 / Clock_tickPeriod)) == FALSE){/* RX timed out abort */if(EasyLink_abort() == EasyLink_Status_Success){/* Wait for the abort */Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER);}}}
Felix ZF:
例程里的\drivers\rfEchoRx和\drivers\rfEchoTx是在一个工程里同时有RF TX和RX操作的例程。
如果你想使用easylink的话,\easylink\rfWsnConcentrator和\easylink\rfWsnNode也是同时有RF TX和RX操作的例程。
user4959119:
回复 Felix ZF:
恩这个我会看,您能帮我分析我现在问题的原因吗?
Felix ZF:
回复 user4959119:
你贴出来的的代码,看起来没什么问题。