6104|5

9

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助,串口输入数据后用nRF24L01进行无线传输 [复制链接]

这个主程序是将要发送的数据直接写进程序中,然后通过nRF24L01进行无线传输,现在需要改成通过串口输入一个数据之后在进行无线传输,该怎么改?求教各位大神!我是新手~~
#include "stm32f4xx.h"
#include "usart.h"
#include "NRF24L01/NRF24L01.h"
#include "stm32f4xx_usart.h"

#define Open_TX        1                        //发送

//#define Open_RX        0                        //接收

extern unsigned char RX_BUF[];
extern unsigned char TX_BUF[];

void  Delay (uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}

int main(void)
{
        USART_Configuration();

        nRF24L01_Initial();
        printf("\r\nUSART1测试成功!NRF2401初始化成功!\r\n");
        while(1)
        {
                #ifdef Open_TX
               
                        TX_BUF[0]= oxaa;
                        NRF24L01_Send();
                        printf("\r\nSend data:0x%x\r\n",TX_BUF[0]);
                        
                        Delay(0xffffff);
                #else
                        NRF24L01_Receive();
                #endif
        }

}
此帖出自stm32/stm8论坛

最新回复

就像我说的 写个串口接收函数(多字节接收)  定义个接收buf   先将数据保存起来   TX_BUF[0]= (u8)USART_ReceiveData(USART1); 仅仅用这句 想实现将串口接收的数据无线发送  是不行的 因为 TX_BUF[0]= (u8)USART_ReceiveData(USART1); 它每次只处理串口数据寄存器里面的值  也就是每次只能处理 一个字节  并将它放在TX_BUF而已  仅仅只有 TX_BUF【0】 改变  所以 你发送123给板子  最终只能通过无线发送1  (0x31) 可明白我的意思啦   先写个接收函数  定义 接收buf 然后将buf里面的值 拷贝到TX_BUF 然后NRF24L01_Send(); 然后就ok了  详情 回复 发表于 2013-6-13 16:33
点赞(1) 关注
 

回复
举报

9

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我用的是STM32F407的芯片
此帖出自stm32/stm8论坛
 
 

回复

1173

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
没有明白你说的,你就想用下面两个函数发送数据啊?
  TX_BUF[0]= oxaa;
    NRF24L01_Send();
此帖出自stm32/stm8论坛

点评

TX_BUF[0]只是个数据缓存区,用来存放要发送的数据的,NRF24L01_Send();是无线芯片的发送函数。 我想问的是用串口输入一个数据来代替写在程序中的0xaa该如何修改程序?  详情 回复 发表于 2013-6-13 15:22
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 ou513 的帖子

TX_BUF[0]只是个数据缓存区,用来存放要发送的数据的,NRF24L01_Send();是无线芯片的发送函数。
我想问的是用串口输入一个数据来代替写在程序中的0xaa该如何修改程序?
此帖出自stm32/stm8论坛
 
 
 

回复

272

帖子

0

TA的资源

纯净的硅(初级)

5
 
就像我说的
写个串口接收函数(多字节接收)  定义个接收buf  
先将数据保存起来  
TX_BUF[0]= (u8)USART_ReceiveData(USART1);
仅仅用这句 想实现将串口接收的数据无线发送  是不行的
因为 TX_BUF[0]= (u8)USART_ReceiveData(USART1);
它每次只处理串口数据寄存器里面的值  也就是每次只能处理 一个字节  并将它放在TX_BUF而已  仅仅只有
TX_BUF【0】 改变  所以 你发送123给板子  最终只能通过无线发送1  (0x31)
可明白我的意思啦  
先写个接收函数  定义 接收buf
然后将buf里面的值 拷贝到TX_BUF
然后NRF24L01_Send();
然后就ok了
此帖出自stm32/stm8论坛

点评

我瞎写了一个,不过通不过编译,大神你帮我看看! #include \"stm32f4xx.h\" #include \"usart.h\" #include \"NRF24L01/NRF24L01.h\" #include \"stm32f4xx_usart.h\" #define Open_TX 1 //发送 //#de  详情 回复 发表于 2013-6-14 11:21
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 xinjitmzy 的帖子

我瞎写了一个,不过通不过编译,大神你帮我看看!
#include "stm32f4xx.h"
#include "usart.h"
#include "NRF24L01/NRF24L01.h"
#include "stm32f4xx_usart.h"

#define Open_TX        1                        //发送

//#define Open_RX        0                        //接收

extern unsigned char RX_BUF[];
extern unsigned char TX_BUF[];
extern unsigned char X1_BUF[];


void  Delay (uint32_t nCount)
{
  for(; nCount != 0; nCount--);
}
int i=0;
void USART1_RX(void)
{                                          
   
         for(i=0;i<8;i++)
    {
      X1_BUF = USART_ReceiveData(USART1);
    }
   
}
int main(void)
{       
        USART_Configuration();

        USART1_RX();

        nRF24L01_Initial();
        printf("\r\nUSART1测试成功!NRF2401初始化成功!\r\n");
        while(1)
        {
                #ifdef Open_TX
                       
                        TX_BUF[0]=X1_BUF;
                        NRF24L01_Send();
                        printf("\r\nSend data:0x%x\r\n",TX_BUF[0]);
                       
                        Delay(0xffffff);
                #else
                        NRF24L01_Receive();
                #endif
        }

}





错误是.\Output\Project.axf: Error: L6218E: Undefined symbol X1_BUF (referred from main.o).
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表