本帖最后由 nbsmaps 于 2016-7-12 21:57 编辑
nrf24L01 无线模块 供电3.3V 控制引脚与5V单片机直连. 只要一启动发送,程序就一直停留在 while(irq);这一句上.我也启动了自动应答,自动重发.而且,即使单片机复位,一定要断电无线模块才行,不然连查找程序都通不过. 请用过的朋友帮我想想是什么原因!
uchar NRF24L01_TxPacket(uchar *txbuf)
{
uchar state;
CE=0; //CE拉低,使能24L01配置
NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH); //写数据到TX BUF 6个字节
DelayUs(100);
CE=1; //CE置高,使能发送
while(IRQ==1); //等待发送完成
state=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值
NRF24L01_Write_Reg(WRITE_REG+STATUS,state); //清除TX_DS或MAX_RT中断标志
if(state&MAX_TX) //达到最大重发次数
{
NRF24L01_Write_Reg(FLUSH_TX,0xff); //清除TX FIFO寄存器
return MAX_TX;
}
if(state&TX_OK) //发送完成
{
return TX_OK;
}
return 0xff; //发送失败
} |