当前位置: 首页 > article >正文

CC2530basic_Rf串口无线收发

1初始化板

2定义无线并初始化

3接收数据发送数据

#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 MAX_RECV_BUF_LEN  128 //定义无线缓冲区的大小
static uint8 pRxData[MAX_RECV_BUF_LEN]; //定义无线缓冲区的大小

#define MAX_UART_RECV_BUF_LEN  128
uint8 uRxData[MAX_UART_RECV_BUF_LEN]; //定义串口缓冲区的大小

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

//#define MY_ADDR                   0x5678      // 本机模块地址  2号模块
//#define SEND_ADDR                 0x1234     //发送地址   2号模块

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)
{
    uint8 len = 0;
    halBoardInit();  //模块相关资源的初始化
    ConfigRf_Init(); //无线收发参数的配置初始化 
    halLedSet(3);
    halLedSet(4);
    while(1)
    { 
        len = halUartRxLen();    // 接收串口数据 的长度   
        if(len > 0)
        {           
            halLedToggle(3);       // 绿灯取反,无线发送指示
            halUartRead(uRxData,sizeof(uRxData));//收串口数据
            halMcuWaitMs(30);
            basicRfSendPacket(SEND_ADDR,uRxData,len);//发rf
            halMcuWaitMs(30);
        } 
        if(basicRfPacketIsReady())   //查询有没收到无线信号
        {
            halLedToggle(4);   // 红灯取反,无线接收指示
            //接收无线数据
            len = basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL);
            //接收到的无线发送到串口数
            halUartWrite(pRxData,len);
        } 
    }
}
/************************main end *********************************************/


http://www.kler.cn/a/154589.html

相关文章:

  • 8.C++面向对象5(实现一个较为完善的日期类)
  • 消息中间件分类
  • 【0x001C】HCI_Write_Page_Scan_Activity详解
  • ubuntu22 安装 minikube
  • ubuntu将firewall-config导出为.deb文件
  • TCP(下):三次握手四次挥手 动态控制
  • [蓝桥杯 2020 省 AB1] 解码
  • 已解决AttributeError: module ‘gradio‘ has no attribute ‘outputs‘
  • Java集合类的重要性
  • 误用STM32串口发送标志位 “USART_FLAG_TXE” “USART_FLAG_TC”造成的BUG
  • GPT实战系列-大模型训练和预测,如何加速、降低显存
  • 【涨薪技术】深入接口测试之Mock技术
  • 关于STM32G0 FLASH 写入时出现PGSERR的一种处理办法
  • n个整数存放在一个一维数组A中,任选一种程序设计语言,编写一个函数,利用递归的方法,求数组中各整数的平均值
  • 状态模式-C++实现
  • 使用java批量生成Xshell session(*.xsh)文件
  • Unity对接后台和加载图片
  • 4.4-Docker bridge0详解
  • oracle FUNCTION(任意两个时间 之间的工作小时)
  • 游戏被流量攻击会有什么样的影响,该用什么样的防护方式去处理
  • 07-原型模式-C语言实现
  • 2022年9月6日 Go生态洞察:Go的漏洞管理新支持
  • 基于Cocos2D-X框架闯关游戏的设计
  • acwing算法基础之贪心--排序不等式、绝对值不等式和推公式
  • 【LeetCode热题100】【双指针】移动零
  • Asp.Net Core Web Api内存泄漏问题