前言:在做某些应用的时候可能需要我们发送或者接收时切换对应的channel。
此次完成测试的平台在WCH的CH592F上完成的。
在工作发送过程中切换37、38、39三个信道进行轮询发送。具体需要使用最关键的函数是:RF_SetChannel
实现代码如下:
if(events & channl_37_tx_evt){RF_Shut();RF_SetChannel(37);tx_end_flag = FALSE;if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)){RF_Wait_Tx_End();}return events ^ channl_37_tx_evt;}if(events & channl_38_tx_evt){RF_Shut();RF_SetChannel(38);tx_end_flag = FALSE;if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)){RF_Wait_Tx_End();}return events ^ channl_38_tx_evt;}if(events & channl_39_tx_evt){RF_Shut();RF_SetChannel(39);tx_end_flag = FALSE;if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)){RF_Wait_Tx_End();}return events ^ channl_39_tx_evt;}if(events & SBP_RF_PERIODIC_EVT){ // RF_Shut(); // tx_end_flag = FALSE; // if(!RF_Tx(TX_DATA, 10, 0xFF, 0xFF)) // { // RF_Wait_Tx_End(); // } tmos_set_event(taskID, channl_37_tx_evt);tmos_set_event(taskID, channl_38_tx_evt);tmos_set_event(taskID, channl_39_tx_evt);tmos_start_task(taskID, SBP_RF_PERIODIC_EVT, 500);return events ^ SBP_RF_PERIODIC_EVT;}
现象: