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(); } }
//任务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); } }