Ejemplo n.º 1
0
void System_init()
{
	delay_init();	    	 //延时函数初始化
	uart_init(9600);
	dc_moter_init();
	LED_Init();
	UART3_Init(115200);
	NRF24L01_Init();    	//初始化NRF24L01  
	  
 	while(NRF24L01_Check())	//检查NRF24L01是否在位.	
	{
		delay_ms(200);
		printf("nrf error\n");
	}								   
	NRF24L01_RX_Mode();
}
Ejemplo n.º 2
0
int main()
{
		init();
	//检测nrf24l01模块连接状况
		if(NRF24L01_Check())//检测正常
		{
				LCD1602_BL_ON()
				delay_ms(100);
				LCD1602_BL_OFF();
				delay_ms(100);
				LCD1602_BL_ON()
				delay_ms(100);
				LCD1602_BL_OFF();
				delay_ms(100);
				delay_ms(500);
		}
		else				//未检测到nrf24l01模块
		{
				LCD1602_BL_ON()
				delay_ms(100);
				LCD1602_BL_OFF();
				delay_ms(100);
				LCD1602_BL_ON()
				delay_ms(100);
				LCD1602_BL_OFF();
				delay_ms(100);
				LCD1602_BL_ON()
				delay_ms(100);
				LCD1602_BL_OFF();
				delay_ms(100);
				delay_ms(500);
		}
		NRF24L01_RX_Mode();
		GPIO_SetBits(GPIOB,GPIO_Pin_1);
		while(1)
		{
			if(EXTI_flag)
			{
				EXTI_flag=0;
				Sensor_Status_Dis();
			}
			
		}
}
//初始化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();
	}
}
Ejemplo n.º 4
0
 int main(void)
 {		
	u16 sta , i=0;
	int t = 200;
	delay_init();	    	 //延时函数初始化	
	LED_Init();
	LED0 = 0;delay_ms(200); LED0 = 1;
	LED1 = 0;delay_ms(200); LED1 = 1;
	LED2 = 0;delay_ms(200); LED2 = 1;
	LED3 = 0;delay_ms(200); LED3 = 1;
	 
	NVIC_Configuration(); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600);	 	//串口初始化为9600
	 
	EXTIX_Init( );
 	NRF24L01_Init();    	//初始化NRF24L01 
	
	NRF24L01_RX_Mode();		
 	while(NRF24L01_Check() == 1)//检查NRF24L01是否在位.	
	{
			LED3=!LED3;				printf("NRF ERROR!!\r\n");

			delay_ms(100 );
	}
	printf("NRF okk!!\r\n");
	sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值    	 
	NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,sta); //清除TX_DS或MAX_RT中断标志
	NRF24L01_Write_Reg(FLUSH_RX,0xff);//清除RX FIFO寄存器
	
	
	TIM2_PWM_Init(999,9);  //PWM OUT
	TIM3_Int_Init(0xffff,71);  //做计时器用

	IIC_Init();	 
	InitMPU6050();
	Init_HMC5883();
	suanfa_GetOrigin(); //初始欧拉角 
	

	
	TIM4_Int_Init(49,7199);	  		//PID调速中断 放在最后初始化,防止打断角度校准
	LOCK = 1;
	UN_LOCK = 0;
	
	while(1){
		
		
		if(LOCK)
		{
			
			lock();
			LED0 = 0;delay_ms(500);LED0 = 1;
			Power = 0;
			Target_x = 0;
			Target_y = 0;
				
		}
		
		if(UN_LOCK)
		{
			suanfa();
			printf("%.2lf  %.2lf  %.2lf\r\n",EA.Roll,EA.Pitch,EA.Yaw);	
// 			TIM_Cmd(TIM4, ENABLE);
			Data_Receive_Anl();
		}
		
// 		printf("--p\r\n");
			 
			
					}
}