[mw_shl_code=c,true]看了好多资料,但是这段程序还是有许多不懂得地方,希望大家帮帮忙~谢谢![/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]#define FLUSH_RX 0xE2 //清除RX FIFO寄存器
[/mw_shl_code]
[mw_shl_code=c,true]#define STATUS 0x07 //状态寄存器[/mw_shl_code]
[mw_shl_code=c,true]#define RX_OK 0x40 //接收到数据中断[/mw_shl_code]
[mw_shl_code=c,true]//启动NRF24L01接收一次数据
//txbuf:待发送数据首地址
//返回值:0,接收完成;其他,错误代码
u8 NRF24L01_RxPacket(u8 *rxbuf) {
u8 sta;
SPIx_SetSpeed(SPI_SPEED_8); //spi速度为9Mhz
sta=NRF24L01_Read_Reg(STATUS); //读取状态寄存器的值 //读出来的sta是什么呢? NRF24L01_Write_Reg(WRITE_REG+STATUS,sta); //清除TX_DS或MAX_RT中断标志 //它具体是怎样清除中断标志的呢? if(sta&RX_OK) //接收到数据 //它不是一直都不是假吗?那放这里的sta有什么作用呢?[/mw_shl_code]
[mw_shl_code=c,true] {
NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH); //读取数据
NRF24L01_Write_Reg(FLUSH_RX,0xff); //清除RX FIFO寄存器 //这里的FLUSH_RX不是命令字吗?怎么还要写入0xff的?[/mw_shl_code]
[mw_shl_code=c,true] return 0;
}
return 1; //没有收到任何数据
}[/mw_shl_code]
|