云迈博客

您现在的位置是:首页 > 灌水专栏 > 正文

灌水专栏

基于CC2530开发板的按键电灯(点对点)

lin2021-03-29灌水专栏396
项目特性˃项目基于两块CC2530开发板,实现点对点通信控制的小demo运行环境˃IAREmbeddedWorkbench项目技术˃c语言,汇编语言项目截图˃代码块˃项目

项目特性

项目基于两块CC2530开发板,实现点对点通信控制的小demo

运行环境

IAR Embedded Workbench

项目技术

c语言,汇编语言

项目截图

代码块

项目路径

调试界面

注意事项

*此工程需要两个CC2530开发板

*debug烧写线

*debug

*USB转T型线

*在分别烧写第一第二块板子时,需要将本机模块地址与发送地址互换

代码块

#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>
uint8   scan_key();

#define MAX_SEND_BUF_LEN  128
#define MAX_RECV_BUF_LEN  128
static uint8 pTxData[MAX_SEND_BUF_LEN]; //定义无线发送缓冲区的大小
static uint8 pRxData[MAX_RECV_BUF_LEN]; //定义无线接收缓冲区的大小


#define MAX_UART_SEND_BUF_LEN  128
#define MAX_UART_RECV_BUF_LEN  128
uint8 uTxData[MAX_UART_SEND_BUF_LEN]; //定义串口发送缓冲区的大小
uint8 uRxData[MAX_UART_RECV_BUF_LEN]; //定义串口接收缓冲区的大小
uint16 uTxlen = 0;
uint16 uRxlen = 0;
unsigned int counter=0; //统计溢出次数
uint8 LEDFlag = 0;
uint8 LEDFlash = 0;

/*****点对点通讯地址设置******/
#define RF_CHANNEL                20         // 频道 11~26
#define PAN_ID                    0x1A5B     //网络id 
//#define MY_ADDR                   0xAC3A     // 本机模块地址
//#define SEND_ADDR                 0x1015     //发送地址

#define MY_ADDR                   0x1015     // 本机模块地址
#define SEND_ADDR                 0xAC3A     //发送地址
/**************************************************/
static basicRfCfg_t basicRfConfig;
// 无线RF初始化
void ConfigRf_Init(void)
{
    basicRfConfig.panId       =   PAN_ID;        //zigbee的ID号设置
    basicRfConfig.channel     =   RF_CHANNEL;    //zigbee的频道设置
    basicRfConfig.myAddr      =   MY_ADDR;       //设置本机地址
    basicRfConfig.ackRequest  =   TRUE;          //应答信号
    while(basicRfInit(&basicRfConfig) == FAILED); //检测zigbee的参数是否配置成功
    basicRfReceiveOn();                           // 打开RF
}

/********************MAIN************************/
void main(void)
{
    uint16 len = 0;
    uint8 SendON  = 0;
    halBoardInit();  //模块相关资源的初始化
    ConfigRf_Init(); //无线收发参数的配置初始化 
    while(1)
    {
       if(P1_2 == 0)   //按键按下
       {
         if(SendON == 0)
         {
            basicRfSendPacket(SEND_ADDR,"ZIGBEE ON\r\n",11);
            SendON = 1;
         }
       }
       else
       {
         if(SendON == 1)
         {
           SendON = 0;
           basicRfSendPacket(SEND_ADDR,"ZIGBEE OFF\r\n",12);
         }
       }

        if(basicRfPacketIsReady())   // 判断有无收到zigbee信号
        {
            len = basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL);   // 接收数据
            if(memcmp(pRxData,"ZIGBEE ON\r\n",11) == 0)
            {
              halLedSet(1);
            }
            else if(memcmp(pRxData,"ZIGBEE OFF\r\n",12) == 0)
            {
              halLedClear(1);
            }       
        } 
    }
}
/************/

#define key_io P1_2

uint8   scan_key()
{
    static  uint8   keysta=1;
    if (key_io)
    {       //按键新开
        keysta=1;
        return 0;        
    }
    else
    {
       if(keysta==0)
           return 0;
       keysta=0;
       return 1; 
    }
}

代码仓库

http://git.yunmell.com:9898/jiangchanglin/cc2530

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~