高级会员
- 积分
- 641
- 金钱
- 641
- 注册时间
- 2012-11-3
- 在线时间
- 6 小时
|
<p>
void main()<br />
{<br />
nRF24L01_Set_TX_Mode(0);//接收<br />
USART_Init();<br />
//Timer0Init();<br />
while(1)<br />
{<br />
order<span style="background-color:#e53333;"><span style="background-color:#ffffff;">=</span><span style="background-color:#ffffff;">Check_</span><span style="background-color:#ffffff;">Rec(); </span></span><br />
} <br />
}</p>
<p>void timer0() interrupt 1 using 1<br />
{<br />
//<span style="background-color:#e53333;"><span style="background-color:#e53333;">order</span>=Che</span><span style="background-color:#e53333;">ck_Rec();</span><br />
count++;<br />
if(count==20)count=0;<br />
}<br />
<br />
</p>
<p>uchar Check_Rec()<br />
{ <br />
uchar status;<br />
uchar RX_Buffer[6]; <br />
sta=SPI_R_byte(READ_REG+STATUS);<br />
if(RX_DR) <br />
{ <br />
CE=0; <br />
SPI_R_DBuffer(RD_RX_PLOAD,RX_Buffer,RX_PLOAD_WIDTH);<br />
<span style="background-color:#e53333;">SendDate</span><span style="background-color:#ff9900;"><span style="background-color:#ffffff;"><span style="background-color:#e53333;">(sta</span><span style="background-color:#e53333;">);</span>//串口发送一个字节数据</span></span><br />
SPI_W_Reg(WRITE_REG+STATUS,0xff);<br />
CSN=0;<br />
SPI_W_Reg(FLUSH_RX,0xff);//SPI写寄存器一字节函数,reg:寄存器地址,value:一字节(值)<br />
CSN=1;<br />
CE=1; <br />
}<br />
return status;<br />
}</p>
<p>我用一款宏晶新出的单片机,51内核的,测试nrf24l01无线通信模块, 按键控制的发送模块,每按下一次就发送一次,<br />
</p>
<p>1. 当我把order=Check_Rec(); 放在定时器中断里面去查询是否接收到数据的时候, </p>
<span style="background-color:#e53333;"><p></p>
<span style="background-color:#ffffff;"><p>SendDate(sta);发送给串口的数据为 0x40 4E 4E 4E 4E 4E 4E 4E 4E 4E 4E........................................(0x4e为不正常值)(只发送了一次的结果)<br />
</p>
<p>2. 当我把order=Check_Rec(); 放在主函数查询是否接收到数据的时候, </p>
<span style="background-color:#e53333;"><p></p>
<span style="background-color:#ffffff;"><p>SendDate(sta);发送给串口的数据为 0x40(正常值)(只发送了一次的结果)<br />
</p>
<p><br />
<span style="background-color:#e53333;">我已经通过</span><span style="background-color:#e53333;">SPI_W_Reg(WRITE_REG+STATUS,0xff);把接收标志位给清除了,为什么每次进入中断里都能进入<br />
</span><span style="background-color:#e53333;"> if(RX_DR)</span></p>
<span style="background-color:#e53333;"><p><span style="background-color:#e53333;"> { 这里...}<br />
</span></p>
<p> </p>
<span style="background-color:#e53333;"><p><br />
</p>
<p>中断时间为70ms</p>
</span><p><br />
<br />
</p>
<p><br />
</p>
<p> </p>
</span></span><p> </p>
</span><p> </p>
<p> </p>
</span></span> |
|