Пример #1
0
int main(void)
 {	 
	u8 R='b';		
	delay_init(72);	    	 //延时函数初始化	  
	usart1_init();	 	//串口初始化
 	NRF24L01_Init();    	//初始化NRF24L01 
	LED();	  
 	while(NRF24L01_Check());	//检查NRF24L01是否在位.	
	
 	while(1)
	{
		NRF24L01_TX_Mode();
		if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE))
		{
			R =USART_ReceiveData(USART1);
			USART_ClearFlag(USART1, USART_FLAG_TC);		
			USART_SendData(USART1, USART_ReceiveData(USART1));
			USART_ClearFlag(USART1, USART_FLAG_RXNE);				
		}  
		NRF24L01_TxPacket(&R);  	
		if(R=='a')
		GPIO_ResetBits(GPIOE, GPIO_Pin_5); //PE=0,LED亮
		if(R=='b')
		GPIO_SetBits(GPIOE, GPIO_Pin_5); //PE=1,LED灭		
	}
}
//初始化24L01的IO口
void NRF24L01_Init(uint8_t mode)
{  
	gpio_out_pp_up_init(GPIOB, GPIO_Pin_7); //NRF24L01_CE初始化
 	spi_config();    		//初始化SPI1  
	exti_config(GPIOB, 5);
	NRF24L01_CE=0; 			//使能24L01
	NRF24L01_CS=1;			//SPI片选取消	 
	while(NRF24L01_Check()){
		printf("not found NRF24L01\r\n");
		delay_ms(500);
	}
	printf("NRF24L01 init ok\r\n");
	
	if(mode == NRF_RX_MODE){
		nrf_state = RX_OK;
		NRF24L01_RX_Mode();
	}
	else{
		nrf_state = TX_OK;
		NRF24L01_TX_Mode();
	}
}
Пример #3
0
//任务0
void KEY0_TASK()
{
    u8 key,mode;
    u16 t=0;
    u8 tmp_buf[33];

    u8 key_buf[33] = "key0_pres";


    LCD_Clear(WHITE);
    Show_Str(50,50,200,24,"当前任务0 :",24,0);

    NRF24L01_TX_Mode();
    mode=' ';//从空格键开始

    //
    while(1)
    {
        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
        {
            LCD_ShowString(30,170,239,32,16,"Sended DATA:");
            LCD_ShowString(0,190,lcddev.width-1,32,16,tmp_buf);
            for(t=0; t<32; t++)
            {

                tmp_buf[t]=key_buf[t];
            }
            tmp_buf[32]=0;//加入结束符
        }
        else
        {
            LCD_Fill(0,170,lcddev.width,170+16*3,WHITE);//清空显示
            LCD_ShowString(30,170,lcddev.width-1,32,16,"Send Failed ");
        }
        LED0=!LED0;
        delay_ms(1500);
    }
}