初级会员
- 积分
- 71
- 金钱
- 71
- 注册时间
- 2015-5-3
- 在线时间
- 1 小时
|
5金钱
<div style="background-color:#E8E8E8;">
[mw_shl_code=c,true] while(1)
{
numm();
if(num==1)
{
Delay(10); //去抖
if(num==1)
{
TxBuf[0] =1 ;
tf = 1 ;
}
while(num==0);
Delay(10);
while(num==0);
}
if (tf==1)
{
nRF24L01_TxPacket(TxBuf); // Transmit Tx buffer data
TxBuf[0] = 0x00;
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
//TxBuf[2] = 0x00;
tf=0;
Delay(1000);
}
// GPIO_SetBits(GPIOB, GPIO_Pin_5);
//***********************************************************************************************
SetRX_Mode();
nRF24L01_RxPacket(RxBuf);
if(RxBuf[0])
{
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
if( RxBuf[0]==1)
{
//GPIO_SetBits(GPIOB, GPIO_Pin_5);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
}
Delay(100);
}
RxBuf[0] = 0x00;
//RxBuf[2] = 0x00;
}
/****************************************************************************************************
//函数:void SetRX_Mode(void)
//功能:数据接收配置
****************************************************************************************************/
void SetRX_Mode(void)
{
MODE_CE(0);
SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收
MODE_CE(1);
Delay1(130);
}
/***********************************************************************************************************
//函数:void nRF24L01_TxPacket(unsigned char * tx_buf)
//功能:发送 tx_buf中数据
**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char * tx_buf)
{
MODE_CE(0); //StandBy I模式
SPI_Write_Buf(WRITE_REG1 + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);
//SPI_Write_Buf(WRITE_REG1 + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据
//SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送
SPI_RW_Reg(WRITE_REG1 + CONFIG, 0x0e);
MODE_CE(1); //置高CE,激发数据发送
Delay1(10);
}
/******************************************************************************************************
//函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
//功能:数据读取后放如rx_buf接收缓冲区中
******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
unsigned char revale=0;
u8 status;
//sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况
status=SPI_Read(READ_REG1+STATUS); // 读取状态寄存其来判断数据接收状况
if(status & 0x40) // 判断是否接收到数据
{
MODE_CE(0); //SPI使能
//SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH); //从接收缓冲区里读出数据
//rx_buf[1]=1;
revale =1; //读取数据完成标志
}
//SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
SPI_RW_Reg(WRITE_REG1+STATUS, status); //清除07寄存器标志
return revale;
}
[/mw_shl_code]
</div>
<br /> |
|