完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
下面为MINI版发送数据 Control_Point1_Open[16]给单片机,单片机接收数据并自动回复给mini板的代码。MINI版的程序不变。
问题是: 1、MINI板第一次发送数据给单片机的时候,单片机接收到的数据是 Control_Point1_Open[16]的数据,但是后面还多接收12个0X00。这是为什么? 2、当单片机接收到MINI板的数据后,自动回复给MINI板,MINI板接收到的数据为12个0x00加Control_Point1_Open[16]的数据。除第一次外再接收数据就 少了0XAA,后面的数据就,只有0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0xBB。这是为什么呢。 void main() { uchar Control_Point1_Open[16]={0xAA,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA1,0x00,0xBB}; uchar Respond_Point1_Open[16]={0xAA,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0xBB}; uchar Rx_Buf[32]; //接收到的数据暂存器,最多32字节数据 uchar i; uchar flag=0; init_NRF24L01(); StartUART(); while(NRF24L01_Check()) //检查不到24l01则报警 { LED0=0; delayms(200); LED0=1; delayms(200); } while(1) { RX_Mode();//接收模式 while(!nRF24L01_RxPacket(Rx_Buf)) //等待接收数据 ,返回1则接收到数据 ,在等待接收数据期间,可以随时变成发送模式 { if(flag==16) //按了按键8 则变成发送模式,发送对应数据,发送完后变成接收模式 { TX_Mode(); //发送模式 nRF24L01_TxPacket(Respond_Point1_Open); // 发送命令数据 delay_ms(500); SPI_WR_Reg(WRITE_REG+NRFRegSTATUS,0XFF); flag=0; break; //退出最近的循环,从而变回接收模式,这句关键 } } for(i=0;i<16;i++) { if(Rx_Buf==Control_Point1_Open) //若接收到对应的数据则实现对应功能 { flag++; R_S_Byte(Rx_Buf); //为串口输出函数 Rx_Buf=0;//清空数据 } } } } |
|
相关推荐
4个回答
|
|
但是我不用自动发送,用按键回复就没出现这种情况,就是上面if(flag==16)改为if(KEY==0),MINI板接收数据完全正常。 而且单片机接收到的数据也正常。想不通的地方就是这里。一个按键,一个自动,完全不一样。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2571 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2366 浏览 5 评论
3214 浏览 3 评论
2840 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2793 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
672浏览 1评论
908浏览 0评论
1030浏览 0评论
674浏览 0评论
502浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 20:24 , Processed in 1.271061 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号