您好!
CC1310 TX 存在问题。
如标题中所述、 RF_runCmd 将仅运行一次。
第二次、它只是挂起、从不退出。
什么地方出错了?
空 RF_TASK (UARg arg0、UARg arg1)
{
rf_params rfParams;
rf_params_init (&rfParams);
rfpacket_t rf_packet_tx ={.pkgcntr=0};
sensordata_t sensordata;
/*打开 LED 引脚*/
ledPinHandle = PIN_OPEN (&ledPinState、LEDGpioInitTable);
if (ledPinHandle ==空)
{
while (1);
}
rf_cmdPropTx.pkt=(uint8_t*)&rf_packet_tx;
rf_cmdPropTx.startTrigger.triggerType = trig_now;
/*请求对讲机的访问*/
rfHandle = RF_OPEN (&rfObject、&RF_prop、(RF_RadioSetup*)&RF_cmdPropRadioDivSetup、&rfParams);
/*设置频率*/
rf_postCmd (rfHandle、(rf_Op*)&rf_cmdf、rf_PriorityNormal、NULL、0);
while (1)
{
PIN_setOutputValue (ledPinHandle、LED_blue_PIN、1);
Task_sleep (1000);
PIN_setOutputValue (ledPinHandle、LED_blue_PIN、0);
//将数据复制到有效载荷
rf_cmdPropTx.pktLen = rf_protocol_pack (&rf_packet_TX、&sensordata);
rf_packet_tx.pkgcntr++;
rf_cmdPropTx.pktLen += 1;// pkgcntr
/*发送数据包*/
RF_EventMask terminationReason = RF_runCmd (rfHandle、(RF_OP*)&RF_cmdPropTx、RF_PriorityNormal、NULL、0);
switch (terminationReason)
{
案例 RF_EventLastCmdDone:
//独立无线电操作命令或最后一个无线电
//链中的操作命令已完成。
中断;
案例 RF_EventCmd 取消:
//命令在启动前被取消;这可能是导致的
//按 RF_cancelCmd ()或 RF_flushCmd ()。
中断;
案例 RF_EventCmdAborted:
//由 RF_cancelCmd ()或导致命令终止突然
// rf_flushCmd ()。
中断;
案例 RF_EventCmdStopped:
// RF_cancelCmd ()或导致正常命令终止
// rf_flushCmd ()。
中断;
默认值:
//未捕捉错误事件
PIN_setOutputValue (ledPinHandle、LED_RED_PIN、0);
while (1);
}
uint32_t cmdStatus =(volatile rf_Op*)&rf_cmdPropTx)-> status;
switch (cmdStatus)
{
案例 PROP_DONE_OK:
//数据包传输成功
中断;
案例 PROP_DONE_STOPPED:
//在发送数据包并完成时接收到 CMD_STOP
//传输数据包
中断;
案例 PROP_DONE_ABORT:
//发送数据包时接收到 CMD_ABORT
中断;
案例 PROP_ERROR_PAR:
//观察到非法参数
中断;
PROP_ERROR_NO_SETUP 案例:
//在受支持的中未设置无线电的情况下发送命令
//模式使用 CMD_PROP_RADIO_SETUP 或 CMD_RADIO_SETUP
中断;
案例 PROP_ERROR_NO_FS:
//发送命令而不对合成器进行编程
中断;
PROP_ERROR_TXUNF 案例:
//运行期间观察到 TX 下溢
中断;
默认值:
//未捕获的错误事件-这些可能来自
// rf_mailbox.h 中定义的状态池
PIN_setOutputValue (ledPinHandle、LED_RED_PIN、0);
while (1);
}
/*关闭无线电*/
RF_Yield (rfHandle);
Task_sleep (10);
}
}