無線傳感網——zigbee基礎實驗-點對點通訊

 
//頭文件
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過來的數據!"調試

相關文章
相關標籤/搜索