你的好了, 问题是我的问题现象很奇葩啊
请大家帮我分析下我的情况。
我的接收端程序用查询 STATUS 接收标志的话是 能反复收到主机广播的信息。
问题是我用中断的方式做接收的时候IRQ 拉低进中断时: sta=NRF24L01_Read_Reg(STATUS); 查询的标志竟然全部是00000000, 而且IRQ 脚一直就为低,
而且只能在主程序中Set_PTX_Receive()后接收到头一次, 信息也能收到, 问题是中断跑完后,IRQ 就不变高了。
#pragma vector=PORT2_VECTOR
__interrupt void port(void)
{
sta=NRF24L01_Read_Reg(STATUS); // 读取状态寄存其来判断数据接收状况
if(sta&RX_OK) // 判断是否接收到数据
{
NRF_CE=0; //SPI使能
NRF24L01_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
SPI_RW(FLUSH_RX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
}
NRF24L01_Write_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
if((Rev_data_buf[0]==0x01)&(Rev_data_buf[1]==0x02)&(Rev_data_buf[2]==0x03)&(Rev_data_buf[3]==0x04)&(Rev_data_buf[4]==0x05))
{
NRF_LED=0; delay(1000); NRF_LED=1; delay(1000); NRF_LED=0; delay(1000); NRF_LED=1;
}
Rev_data_buf=0;
Set_PTX_Receive();
P2IFG=0X00;
}
|