题目:

实现基于BasicRF无线点对点通信的双向灯光控制,具体要求如下:

1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义。
<2> 按下节点A的SW1按键,松开后,向节点B发送1个字节的无线数据。节点B接收到新的无线数据后,判断该数据如果为0xa2,则切换节点B中D4灯的开关状态。
<3> 按下节点B的SW1按键,松开后,向节点A发送1个字节的无线数据。节点A接收到新的无线数据后,判断该数据如果为0xa2,则切换节点A中D4灯的开关状态。

注:<1> D4灯,连接到CC2530的P1_1引脚。

<2> SW1按键;连接到CC2530的P1_2引脚。

配置点对点无线通信的基本参数

#define RF_CHANNEL    17         // 频道 11~26
#define PAN_ID 0x1234 //网络id

配置节点信息

//节点A的地址信息
#define MY_ADDR 0x000a //本机模块地址
#define SEND_ADDR 0x000b //发送地址 //节点B的地址信息
//#define MY_ADDR 0x000b //本机模块地址
//#define SEND_ADDR 0x000a //发送地址

变量定义与函数声明

#define D4  P1_1
#define SW1 P1_2 unsigned char cmd = 0xa2; //无线发送的命令字
unsigned char dat = ; //无线接收的数据 void Init_Port(); //初始化D4灯与SW1按键
void Delay(unsigned char t); //普通延时函数
void Scan_Keys(); //按键扫描处理函数
void Recv_RF_Data(); //无线数据接收处理函数

端口初始化函数的实现

void Init_Port()
{
//初始化D4灯和D5灯的端口P1_1
P1SEL &= ~0x02; //P1_1为通用I/O端口
P1DIR |= 0x02; //P1_1端为输出口
//初始化SW1按键的端口P1_2
P1SEL &= ~0x04; //P1_2为通用I/O端口
P1DIR &= ~0x04; //P1_2端为输出口
P1INP &= ~0x04; //P1_2设置为上拉/下拉模式
P2INP &= ~0x40; //P1_2设置为上拉 D4 = ;
}

延时函数

void Delay(unsigned char t)
{
while(t--);
}

按键扫描函数

void Scan_Keys()
{
if(SW1 == )
{
Delay();
if(SW1 == ) //确定SW1按键按下
{
while(SW1 == ); //等待SW1按键松开
basicRfSendPacket(SEND_ADDR, &cmd, );
}
}
}

无线数据接收处理函数的实现

void Recv_RF_Data()
{
if(TRUE == basicRfPacketIsReady()) //接收到新的无线数据
{
basicRfReceive(&dat, , NULL); //读出1个字节数据到dat变量
if(dat == 0xa2) //判断接收数据是否为0xa5
{
D4 = ~D4; //切换D4灯的开关状态
dat = 0x00;
}
}
}

主函数的实现

void main(void)
{
halBoardInit();//选手不得在此函数内添加代码
ConfigRf_Init();//选手不得在此函数内添加代码 Init_Port(); //初始化D4灯和SW1按键的端口 while()
{
/* user code start */
Scan_Keys(); //扫描处理按键
Recv_RF_Data(); //接收处理无线数据
/* user code end */
}
}

basicRF双向灯光控制的更多相关文章

  1. 基于W5500+Yeelink的远程灯光控制设计

    概述 工具:物联网云平台Yeelink  DHT11温湿度传感器   W5500EVB 编译环境:Keil4 目的:通过以太网实时监控远程某个位置的温度和湿度 在W5500EVB端连接LED灯.通过W ...

  2. SPI、I2C、UART、I2S、GPIO、SDIO、CAN 简介

    转自http://sanwen.net/a/fmxnjoo.html SPI.I2C.UART.I2S.GPIO.SDIO.CAN,看这篇就够了 总线 总线,总要陷进里面.这世界上的信号都一样,但是总 ...

  3. SPI、I2C、UART、I2S、GPIO、SDIO、CAN

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

  4. 基于Unity 5的次世代卡通渲染技术 -- Unite 2017 米哈游总监贺甲分享实录

    在5月12日Unite2017开发者大会上,米哈游技术总监兼美术指导贺甲进行了主题为次世代卡通渲染的演讲.一下为详细分享内容: 大家好,首先自我介绍一下,我叫贺甲,在米哈游担任技术总监和美术指导工作, ...

  5. 对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释

    SPI SPI(Serial Peripheral Interface:串行外设接口); SPI总线由三条信号线组成:串行时钟(SCLK).串行数据输出(SDO).串行数据输入(SDI).SPI总线可 ...

  6. SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别及使用方法。

    SPI 全称及由来:SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的. ...

  7. include的用法例子,以及include+merge的用法例子

    [include+LinearLayout]的使用例子 AndroidIncludeLayout.java package com.AndroidIncludeLayout; import andro ...

  8. 软件产品案例分析----K米app

    第一部分 调研.评测 1.1评测 1.1.1 第一次上手体验 1.1.2 bug 1.1.2.1 bug定义 1.1.2.2 栗子 1.1.2.2.1 A级 1.1.2.2.2 B级 1.1.2.2. ...

  9. USB Keyboard Recorder

    catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descript ...

随机推荐

  1. IDEA我常用的快捷键

    IDEA快捷键 全屏编写代码:Ctrl+Shift+F12

  2. 安全测试-WEB安全渗透测试基础知识(四)

    .4. HTTP标准 1.4.1. 报文格式 1.4.1.1. 请求报文格式 <method><request-URL><version> <headers& ...

  3. Git敏捷开发--stash命令

    save 执行git stash,默认以commit info保存当前的stash信息 当在某个commit下,执行多次stash时,无法友好地区分每个stash的改动.save 命令可以清晰地标识每 ...

  4. frp内网穿透学习

    前言 因为自己在内网,但是目标站在外网,这时候可以通过内网穿透工具,将接收到的请求转发到内网,实现在内网的msf可以控制外网的靶机. 也看了一些Ngrok,花生壳的,发现Ngrok.cc这个看文章说有 ...

  5. AI-web-1靶机过关记录

    靶机地址:172.16.1.195 Kali地址:172.16.1.107 1.信息收集 端口扫描: 目录扫描: 发现robots.txt敏感文件,查看 存在/m3diNf0/,/se3reTdir7 ...

  6. 华为鲲鹏服务器安装 k3s+rancher

    华为鲲鹏服务器安装 k3s+rancher 华为鲲鹏服务器 华为鲲鹏服务器采用华为自研cpu ARMv8架构,提供 Windows 和多个Linux 系统,作为服务器使用我一直使用Centos系统(不 ...

  7. linux下五种查找命令

      我们经常需要在系统中查找一个文件或者命令,那么在Linux系统中如何快速定位和精确查找它呢?下面总结了五个基础命令·分别是which.whereis.type.locate.find. 一 whi ...

  8. 移动(appium)自动化测试-爬虫的另一种手段

    appium自动化测试环境搭建: 1.Python环境(推荐2.7)和jdk. 2.Adb工具的下载:自己单独下载adb.夜神模拟器自带和Android sdk 3.Apk安装介质:真机.Androi ...

  9. python-Django与Nginx整合gunicorn模块

    1.pip install gunicorn 2.修改Nginx配置文件 vim /etc/nginx/conf.d/virtual.conf server { listen ; #listen so ...

  10. 二、Go语言开发环境安装与编写第一个Hello World

    本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言. 全文使用环境如下: Go语言版本:1.13 操作系统:deepin 使用工具:Goland开发工具 Go语言追溯历史 Go语言2009 ...