|
我用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, 杜汶泽)
|