示例#1
0
void SYS_INIT(void)
{
	LED_INIT();
	LED_FLASH();
	Moto_Init(); 
	LED_FLASH();	
	
	Tim3_Init(500);
	Nvic_Init();
	Uart1_Init(115200);
	
	ANO_TC_I2C2_INIT(0xA6,400000,1,1,3,3);
	MPU6050_Init();

	Spi1_Init();
	Nrf24l01_Init(MODEL_TX2,40);
 	if(Nrf24l01_Check())
		Uart1_Put_String("NRF24L01 IS OK !\r\n");
 	else 									
		Uart1_Put_String("NRF24L01 IS NOT OK !\r\n");
		
	ADC1_Init();
	
	FLASH_Unlock();
	EE_INIT();
	EE_READ_ACC_OFFSET();
	EE_READ_GYRO_OFFSET();
	EE_READ_PID();
	
	Tim3_Control(1);
}
示例#2
0
void cm_process(u8 port)   
{       
   if((infrm[port].addr_to == myaddr) || (infrm[port].addr_to == BROADCAST_ADDR))
   {    parse_node_frm((u8*)&RS485,port); //modify the content 
        LED_FLASH(LED_D7);
   }                    
}
示例#3
0
void SYS_INIT(void)
{
	LED_INIT();			//LED及串口IO 初始化
	LED_FLASH();		//LED闪烁
	Tim3_Init(500);	//中断初始化 //1000=1MS,500=0.5MS
	Moto_Init();	  //PWM
	
	//	Uart1_Init(115200);	//串口初始化,飞控上几乎无用
	
	Spi1_Init();		//SPI初始化
	Nvic_Init();		//中断初始化
	Nrf24l01_Init(MODEL_TX2,40);	//2401中断初始化  主发送 通道 40
	
// 	if(Nrf24l01_Check())	Uart1_Put_String("NRF24L01 IS OK !\r\n");			//检测2401是否初始化成功
// 	else 									Uart1_Put_String("NRF24L01 IS NOT OK !\r\n");
	
	InitMPU6050();
	
	ADC1_Init();		//检测电池电压
	FLASH_Unlock();	//保存飞飞控参数
	EE_INIT();
	EE_READ_ACC_OFFSET();
	EE_READ_GYRO_OFFSET();
	EE_READ_PID();
	
	PID_ROL.P = PID_PIT.P = 5;	//用于初始化pid,如用匿名上位机写入pid,则屏蔽
	PID_ROL.D = PID_PIT.D = 0.1;			
	PID_YAW.P = 0.5;	
	PID_YAW.D = 0.05;			
}
示例#4
0
void cm_ack(u8 port)
{                
   outfrm[port].cksum = checksum((u8*)(&outfrm[port]),6)+checksum( outfrm[port].databuf, outfrm[port].datalen);
   //print out the first 6 bytes of a frame, head1, ... cmd, data_len
   prints((u8*)(&outfrm[port]),6,port);
   //print out data if there is any to be sent out
   if(outfrm[port].datalen > 0)
        prints(outfrm[port].databuf, outfrm[port].datalen, port);
   //print out check_sum byte
   prints(&outfrm[port].cksum,1,port);
   // LED to indicate command ack.
   LED_FLASH(LED_D8);
}
/*******************************************************************************
* 名称:SysTask_Tick
* 功能:Les系统计时
* 形参:
* 返回: 无
* 说明:
******************************************************************************/
void //ICACHE_FLASH_ATTR
 SysTask_Tick(void)
{
  if(mSysTick == 0)return;//系统节拍计时器
  mSysTick=0;

  if(SysTask.m_Hs6200Ok > 200){SysTask.m_Hs6200Ok = 0;SysTask.m_CloudOk = 6;}
  else if(SysTask.m_Hs6200Ok > 99)SysTask.m_Hs6200Ok++;

//  if(SysTask.m_CloudOk > 200)SysTask.m_CloudOk = 0;
//  else if(SysTask.m_CloudOk > 5)SysTask.m_CloudOk++;

//  LetsNetWork_Tick();                                   //协议节拍
  if(mSysSec >= 1000){                                //秒计数
    LED_FLASH();                                          //LED节拍
    mSysSec = 0;                                        //秒计数清零
//    if(SysTask.m_WifiState > WIFI_SMARTLINK)
//    	UDPs_Tick();                                        //UDP任务

#ifdef CloudKey
    if(IsConnect)Cloud_Tick();                                       //云任务节拍
    if(mCloudState.Ackwait > 0)mCloudState.Ackwait--;   //服务器应答等待时间
#endif

//    if(SysTask.eTime)SysTick_DateAndTime();             //定时/时钟任务

    if(SysTask.nCtCnt > 0)
    {
    	SysTask.nCtCnt--;             //允许新灯加入时间
    	//os_printf("允许加入时间 is %d\r\n",SysTask.nCtCnt);
    }

//    PowerOffToSmartLink();
//    LinkTcpReConnect();
  }


}