新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2020-7-21
- 在线时间
- 8 小时
|
1金钱
求大神指点,感激不尽。
无线通信实验第31课里面有一段收发数据包的两个函数,NRF24L01状态寄存器STATUS中断标志清除是怎么清除的,为什么接收函数和发送函数用一个方法清除的。
u8 NRF24L01_TxPacket(u8 *txbuf)
{
u8 sta;
SPI2_SetSpeed(SPI_BaudRatePrescaler_8);//
NRF24L01_CE=0;
NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//
NRF24L01_CE=1;//
while(NRF24L01_IRQ!=0);//
sta=NRF24L01_Read_Reg(STATUS); //
NRF24L01_Write_Reg(NRF_WRITE_REG+STATUS,sta); //清除TX_DS和MAX_RT中断标志
if(sta&MAX_TX)//
{
NRF24L01_Write_Reg(FLUSH_TX,0xff);//
return MAX_TX;
}
if(sta&TX_OK)//
{
return TX_OK;
}
return 0xff;//
}
//
/
//
u8 NRF24L01_RxPacket(u8 *rxbuf)
{
u8 sta;
SPI2_SetSpeed(SPI_BaudRatePrescaler_8); //
sta=NRF24L01_Read_Reg(STATUS); //
NRF24L01_Write_Reg(NRF_WRITE_REG+STATUS,sta); //
if(sta&RX_OK)//
{
NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//
NRF24L01_Write_Reg(FLUSH_RX,0xff);//
return 0;
}
return 1;//
}
|
|