搜索
bottom↓
回复: 6

为什么NRF24L01接收的数据违反C规则的显示正确,对的代码.....

[复制链接]

出0入0汤圆

发表于 2012-9-5 15:01:02 | 显示全部楼层 |阅读模式
我用2个NRF24L01,一个发,一个收,发送数组unsigned char TxBuf[RX_PLOAD_WIDTH]=
{0x21,0x22,0x23,0x24,0x25,0x26,0x27};  其中RX_PLOAD_WIDTH=TX_PLOAD_WIDTH=8;
当主程序这样写时串口能正确接收:23 24 25 26 27 21 22 23 24 25 26 27 21 22 23 24 25 26 27
主程序:#include "NRF24L01.h"
uchar RxBuf[]={0};

unsigned char TxBuf[RX_PLOAD_WIDTH]=
{0x21,0x22,0x23,0x24,0x25,0x26,0x27};
void main(void)
{
  unsigned char i,sta;
  
   NRF24L01_Init();
        USART_Init(9600);
        //NRF24L01_Check()
        RX_Mode();
     while(1)
         {                       
                                /*if(NRF24L01_RxPacket(RxBuf))
                                {        for(i=1;i<2;i++)               
                                                USART_SendData(*(RxBuf+i));
                               
                                }*/
                                NRF24L01_RxPacket(RxBuf);
                                for(i=1;i<8;i++)
                                        USART_SendData(RxBuf[i]);//串口显示
               
         }
}说明能正确接收了,但是数组这样写是违法的啊,数组应该是从0开始写啊:
如果写成这样for(i=0;i<7;i++)
接收的数据为:00 21 22 23 24 25 26 00 21 22 23 24 25 26 00 21 22 23 24 25 26 00 21 22 23 24 25 26 00
为什么正确的代码不行,违反C规则的代码显示却正确?
用指针的话串口干脆出现乱码了或不显示了
很蛋疼

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-9-5 15:02:04 | 显示全部楼层
修正一下,RX_PLOAD_WIDTH=TX_PLOAD_WIDTH=7;,上面的写错了

出0入0汤圆

 楼主| 发表于 2012-9-5 15:02:49 | 显示全部楼层
#define TX_ADR_WIDTH    5   //5字节的地址宽度
#define RX_ADR_WIDTH    5   //5字节的地址宽度
#define TX_PLOAD_WIDTH  7  //7字节的用户数据宽度
#define RX_PLOAD_WIDTH  7  //7字节的用户数据宽度

出0入0汤圆

 楼主| 发表于 2012-9-5 15:03:27 | 显示全部楼层
求解了!!!!!!!!!!!!!!

出0入0汤圆

发表于 2012-9-5 15:06:05 | 显示全部楼层
要看你NRF24L01接收中的前导,同步,地址数据载荷及CRC数据报是否处理正确

出0入0汤圆

发表于 2012-9-5 15:13:33 | 显示全部楼层
看看NRF24L01_RxPacket(RxBuf);这个接收不会就是从1开始吧

出0入0汤圆

发表于 2012-9-9 14:42:12 | 显示全部楼层
  for(i=1;i<8;i++)
USART_SendData(RxBuf[i]);//串口显示
i=0怎么办?
for(i=1;i<8;i++)
USART_SendData(RxBuf[i]);//数据是从0存入的,这样写从1开始了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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