OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5494|回复: 3

NRF24L01通信(使用原子个的代码),总是要按单片机复位键好多次 ,才会正常通信

[复制链接]

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
发表于 2015-5-27 18:09:56 | 显示全部楼层 |阅读模式
5金钱
如题这是为什么呢? NRF24L01通信,我每次都要按单片机复位键好多次 ,才会正常通信,完成我代码的功能<br />
发的部分的主代码:<br />
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]//#include "luart_init(9600);ed.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "led.h"
#include  "usart.h"
#include  "pwm.h"
#include  "24l01.h"
#include  "spi.h"
int main(void)
{
  u8 tmp_buf[33]="ss";
        SystemInit();
        delay_init(72);             //???±??????
        NVIC_Configuration();
        uart_init(9600);
        LED_Init();
        NRF24L01_Init();    //??????NRF24L01  
  LED1=0;
  printf("a");
        while(NRF24L01_Check())//?ì??????24L01
        {                             
               
                LED1=!LED1;//DS0????
                delay_ms(300);
        }                                     
         while(1){

                    TX_Mode();                                 
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                                 // printf("a");                         
                                  LED1=0;//DS0????
                                  delay_ms(300);
                                  LED1=1;//DS0????
                                  delay_ms(300);
                    
            }                       
           }
}



[/mw_shl_code]
</div>
收的部分的代码:<br />
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]//#include "luart_init(9600);ed.h"
#include "delay.h"
#include "sys.h"
//#include "key.h"
#include "led.h"

#include "usart.h"
#include "pwm.h"
//#include "l298.h"
#include  "24l01.h"
#include  "spi.h"

int main(void)
{
  
        u8 tmp_buf[33] ;
        SystemInit();
        delay_init(72);             //???±??????
        NVIC_Configuration();
        uart_init(9600);
        LED_Init();
        NRF24L01_Init();    //??????NRF24L01
LED1=0;
        //  LED2=0;
while(NRF24L01_Check())//?ì??????24L01
        {                             
               
                LED1=!LED1;//DS0????
                delay_ms(300);
        }                                     
            while(1){

                     RX_Mode();                                 
                        if(NRF24L01_RxPacket(tmp_buf )==0)
                        {
                           printf("%s \r\n",tmp_buf);
                                  LED0=0;//DS0????
                     delay_ms(1000);
                                  LED0=1;
                                 delay_ms(1000);
            }                       
    }
}

[/mw_shl_code]
</div>
在我的测试中,好像存在这么个问题,似乎是,我的NRF24L01只能发一次,之后就要复位,可能是这个原因造成的。但我始终爱原子个的代码上改的。只改了主函数。并没觉得把什么重要代码给改了。

最佳答案

查看完整内容[请看2#楼]

你的模式设置,放错地方了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-5-27 18:09:57 | 显示全部楼层
你的模式设置,放错地方了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2014-4-12
在线时间
0 小时
 楼主| 发表于 2015-5-29 16:22:25 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>多谢原子哥,果然是我放错位置了。我放在while(1)外面就好了。无线转串口也oK了。
<br>我又想做个MPU6050的遥控器。但是发现,我这样写的话,MPU6050无法正确读数,似乎失效了。我用串口读,发现MPU6050就只读了一次数据。就不读了。
<br>是这么写的:
<br>&nbsp;while(1){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MPU6050_Pose();&nbsp;//能得到角度
<br>                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        tmp_buf[0]=(u8)Pitch;       
<br>                                &nbsp;&nbsp;printf("sd&nbsp;%d",tmp_buf[0]);
<br>                                &nbsp;&nbsp;printf("gg&nbsp;%f",Pitch);        &nbsp;
<br>//NRF24L01_TxPacket(tmp_buf);
<br>                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
<br>                        {&nbsp;
<br>                                &nbsp;
<br>                                &nbsp;&nbsp;LED1=0;&nbsp;
<br>                                &nbsp;&nbsp;delay_ms(300);
<br>                                &nbsp;&nbsp;LED1=1;&nbsp;
<br>                                &nbsp;&nbsp;delay_ms(300);        &nbsp;&nbsp;&nbsp;&nbsp;
<br>        &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                &nbsp;&nbsp;&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<br>但我删去if语句判断就OK了,改成:
<br>&nbsp;while(1){
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MPU6050_Pose();&nbsp;
<br>                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        tmp_buf[0]=(u8)Pitch;       
<br>                                &nbsp;&nbsp;printf("sd&nbsp;%d",tmp_buf[0]);
<br>                                &nbsp;&nbsp;printf("gg&nbsp;%f",Pitch);        &nbsp;
<br>                                NRF24L01_TxPacket(tmp_buf);
<br>&nbsp;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<br>这是为什么呢,是24l01的自动应答影响了mpu6050的角度输出了吗
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-5-30 01:01:15 | 显示全部楼层
回复【3楼】魂淡:
<br>---------------------------------
<br>看不出问题。&nbsp;不过应该不是自动应答的问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-1 10:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表