前言:在做某些應用的時候可能需要我們傳送或者接收時切換對應的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; }
現象: