//頭文件
1 #include <iocc2530.h> 2 3 #include "hal_mcu.h" 4 #include "hal_assert.h" 5 #include "hal_board.h" 6 #include "hal_rf.h" 7 8 #include <stdio.h> 9 #include "basic_rf.h" 10 11 #define NODE_TYPE 0 12 #define RF_CHANNEL 25 13 14 #define PAN_ID 0x2007 15 #define SEND_ADDR 0x2530 16 #define RECV_ADDR 0x2520 17 18 static basicRfCfg_t basicRfConfig;
先將NODE_TYPE改成1(發送),而後可找一個標識爲Status的盒子編譯燒寫此程序(斷電)
再將NODE_TYPE改成0(接收),而後可找一個標識爲Data的盒子編譯燒寫此程序
node
RF數據發送函數函數
void rfSendData(void) { uint8 pTxData[] = {"你好,我是發送端CC2530過來的數據!\r\n\r\n"}; uint8 ret; printf("send node start up...\r\n"); basicRfReceiveOff(); while(TRUE) { ret = basicRfSendPacket(RECV_ADDR, pTxData, sizeof pTxData); if (ret == SUCCESS) { hal_led_on(1); halMcuWaitMs(100); hal_led_off(1); halMcuWaitMs(900); } else { hal_led_on(1); halMcuWaitMs(1000); hal_led_off(1); } } }
RF數據接收函數 ui
1 void rfRecvData(void) 2 { 3 uint8 pRxData[128]; 4 int rlen; 5 6 7 printf("recv node start up...\r\n"); 8 9 basicRfReceiveOn(); 10 11 while(TRUE) 12 { 13 while(!basicRfPacketIsReady()); 14 rlen = basicRfReceive(pRxData, sizeof pRxData, NULL); 15 if(rlen > 0) 16 { 17 printf((char *)pRxData); 18 } 19 } 20 }
主函數spa
void main() { halMcuInit(); //MCU初始化 hal_led_init(); //LED初始化 hal_uart_init(); //Uart初始化 if(FAILED == halRfInit()) //CC2530-RF 初始化 { HAL_ASSERT(FALSE); } basicRfConfig.panId = PAN_ID; basicRfConfig.channel = RF_CHANNEL; basicRfConfig.ackRequest = TRUE; #if NODE_TYPE basicRfConfig.myAddr = SEND_ADDR; //(0x2530) #else basicRfConfig.myAddr = RECV_ADDR; //(0x2520) #endif if(basicRfInit(&basicRfConfig)==FAILED) { HAL_ASSERT(FALSE); } #if NODE_TYPE rfSendData(); #else rfRecvData(); #endif }
再將剛纔燒寫好的發送盒子拼接到接收盒子上開串口調試器後(兩根線都鏈接收盒)進行跟蹤結果以下:(接收盒子不斷有數據過來)"你好,我是發送端CC2530過來的數據!"調試