基于BasicRF无线点对点通信

使用IAR打开TI提供的BasicRF资源项目

资源链接:百度网盘 提取码: 6aeu

资源项目列表如下:

rf_set.c

#include "hal_defs.h"
#include "hal_cc8051.h"
#include "hal_int.h"
#include "hal_mcu.h"
#include "hal_board.h"
#include "hal_led.h"
#include "hal_rf.h"
#include "basic_rf.h"
#include "hal_uart.h" 
#include <stdio.h>
#include <string.h>
#include <stdarg.h>



/*****点对点通讯地址设置******/

#define RF_CHANNEL                22         // 频道 11~26
#define PAN_ID                    0x8888     //网络id 


//#define A 0;                                 //显隐此宏定义以实现模块切换

#ifdef A
    #define MY_ADDR                   0xAC3A     //本机模块地址
    #define SEND_ADDR                 0x1050     //发送地址
#else
    #define MY_ADDR                   0x1050     //本机模块地址
    #define SEND_ADDR                 0xAC3A     //发送地址
#endif




#define SW2 P0_1
#define D6 P1_4

/**************************************************/
static basicRfCfg_t basicRfConfig;

unsigned char data_send = 0x02;
unsigned char data_receive;

// 无线RF初始化
void ConfigRf_Init(void)
{
  
    basicRfConfig.panId       =   PAN_ID;
    basicRfConfig.channel     =   RF_CHANNEL;
    basicRfConfig.myAddr      =   MY_ADDR;
    basicRfConfig.ackRequest  =   TRUE;
    while(basicRfInit(&basicRfConfig) == FAILED);
    basicRfReceiveOn();
 
}


void Init_Port()
{
    P1DIR |= 0x10;
}

void DelayMs(uint16 time){
    for(uint16 i = 0; i < time; i++)
        for(uint16 j = 0; j < 535; j++);
}


/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   
    Init_Port();
    while(1)
    {
    /* user code start */
        
        if(SW2 == 0)
        {
            DelayMs(10);
            if(SW2 == 0)
            {
                while(SW2 == 0);  //如果一直按着SW2按钮会一直停留在此
                basicRfSendPacket(SEND_ADDR, &data_send, 1);
            }
        }
        
        
        //接收新数据
        if(basicRfPacketIsReady())
        {
            basicRfReceive(&data_receive, 1, NULL);
            if(data_receive == 0x02) D6 = ~D6;
        }
      
       
    /* user code end */
    }
}

测试方式

1.准备两块开发板(Zigbee协调器),仿真器,10pin排线,USB线
2.把排线插在一块板子相应位置,下载调试

3.把排线拔除,插在另一块板子相应位置,隐此以下宏定义

//#define A 0;                                 //显隐此宏定义以实现玩家切换

下载调试

运行结果

当按下并松开板子SW2键,另一个板子D6点亮

posted @ 2021-11-03 16:19  yassine  阅读(423)  评论(0编辑  收藏  举报