Quadrotor.c ( File view )

  • By zhyunhao 2015-01-04
  • View(s):1009
  • Download(s):77
  • Point(s): 1
			
#include "Quadrotor.h"
#include "common.h"
#include "Fmath.h"
#include "math.h"
#include "GPS.h"
#include "GCS_Protocol.h"

volatile uint8_t  Fly_Mode = default_quad,yaw_lock = 0; //飞行器的架构,默认十字四轴,见fly_config.h
volatile int16_t  Yaw_DIRECT = 1;
int16_t THROTTLE,PID_ROLL,PID_PITCH,PID_YAW;
int16_t PWM_Offset_Roll,PWM_Offset_Pitch,PWM_Offset_Yaw;
volatile float PID_dt = 0;
volatile float Quad_Pitch,Quad_Roll,Quad_Raw,Quad_THR;
float  Target_Roll,Target_Pitch,Target_Yaw,Tartget_hight = 0.5;
volatile uint8_t IsAutoHigh = 0;  //是否开启定高。为0 不开启。为1 则开定高
volatile uint8_t Quadrotor_Mode = Quad_Manual; 	//当前的飞行模式,手动,平衡,定点等
//int16_t tpitch,troll,tyaw,pidpitch,pidroll,pidyaw;


struct Quad_PID  PID_NULL[10];
struct Quad_PID 
				no_pid_temp,
				Stabilize_Roll,  // 横滚 PID
				RollRate,		  // 横滚 角速率PID
				Stabilize_Pitch,  // 府仰 PID
				PitchRate,		  // 府仰 角速率PID
				Stabilize_Yaw,	  //航向 PID
				YawRate,          //航向 角速率PID
				AutoHigh_THR,	  //定高 PID
				Climb,            //爬升 PID
				Position_Hold,	  //位置 定点PID
				Position_Speed	  //速度 PID
				;	  

float GPS_PITCH=0,GPS_ROLL=0;
int16_t Auto_High_PID(float TargetHigh,uint8_t isRate);
void Roll_Pitch_Yaw_RatePID(float Rate_roll,float Rate_pitch,float Rate_yaw);
void Roll_Pitch_Yaw_AnglePID(float Angle_roll,float Angle_pitch,float Angle_yaw);
float Quadrotor_PID(float err,float Differ_in,struct Quad_PID *PID);
void PID_Reset_Integ(struct Quad_PID *PID);
float Get_Yaw_Error(float set,float currt);
int16_t Pitch_Roll_PID(struct Quad_PID *PID,int16_t gyro);
int16_t Thr_High_PID(void);
int16_t Yaw_PID(float gyro);
void Position_Hold_Reset(void);
void GPS_Position_Hold(void);

// 读取PWM5输入值,确定飞控的工作模式
unsigned char Read_Mode(void){

	if(PWM_Input_CH5 < (int16_t)(PWM_Input_Offset-100)){
  //小于 1400us
	return 	Quad_Hold_Position;	 //定点飞行模式
	
}else if(PWM_Input_CH5 >(int16_t)(PWM_Input_Offset+100)){
  //大于 1600us
	return Quad_Manual;		  //手动模式
	
}else return Quad_Level_Lock ;	 //平衡模式	1500us 左右

}

/**************************实现函数********************************************
*函数原型:		void Quadrotor_Motor_Update(void)
*功  能:	    电机转速更新。四轴的关键控制部分.
目前的程序有以下特点需要注意:
1. 通道5的输入做为控制信号 

3. PWM输入定义:
	PWM_Input_CH1 目标横滚角度输入  1500us为0度
	PWM_Input_CH2 目标俯仰角度输入  1500us为0度
	PWM_Input_CH3 油门量输入
	PWM_Input_CH4 航向输入
	PWM_Input_CH5 飞行模式控制,当脉宽小于1500us时,进入飞行模式,
	否则进入 待机模式。 当上电时,飞控进入 待机模式,并且油门量CH3大于1500us时,进入电调行程设置模式
输出的结果都在	Set_PWMOuput_CH1 直接输出PWM
*******************************************************************************/
void Quadrotor_Motor_Update(void) {

  static int16_t calcount=0;
  float ftemp;
  static unsigned char mode;
  static uint32_t last_time = 0,now_time;
//---------------计算控制环更新时间间隔-------------------------------
  if(last_time == 0){

  	last_time = micros();
	return ;
  
}
  now_time = micros(); //读取系统时间
  if(now_time < last_time){

  					last_time = now_time ;
  					return ;
					
}
  PID_dt = (float)(now_time - last_time); 
  PID_dt /= 1000000.0f;   //单位S
//---------------读取遥控器工作模式---------------------------------------
  mode = Read_Mode();  //读取工作模式。通过 PWM5输入值判断

  //目标航向控制。当油门大于1100us时,认为用户希望起飞。那么此时的航向做为目标航向
  //[李老板没钱了]增加
  if(PWM_Input_CH3 > (int16_t)1100){

  	if(yaw_lock != 1){

		yaw_lock = 1;
		Target_Yaw = IMU_Yaw; //将当前的航向做为目标航向
	
}
  	
}else{

		yaw_lock = 0;
	
}

  if((mode != Quadrotor_Mode)&&(Quadrotor_Mode != Quad_ESC_Cal)){

	Quadrotor_Mode = mode;
	//LED_Set_Blink(Blue,100,200,4);
	pidReset(&Stabilize_Roll); //清PID 的积分
	pidReset(&Stabilize_Pitch);
	pidReset(&Stabilize_Yaw);
	pidReset(&AutoHigh_THR);
	Position_Hold_Reset();
  
}
//---------------LED指示飞行状态---------------------------------------
 calcount++;
 if(calcount == PWM_Hz){
 //1S 进入一次,用蓝色的LED提示当前飞行模式
	calcount = 0;
	switch(Quadrotor_Mode){
 //检测当前状态,
	case Quad_ESC_Cal: LED_Set_Blink(Blue,50,50,10); 	
			break;	//电调校准模式,蓝色的LED快速闪烁
	case Quad_Manual: LED_Set_Blink(Blue,100,100,1);
			break;	//手动模式  蓝色的LED 1S 闪一次
	case Quad_Level_Lock: LED_Set_Blink(Blue,100,100,2);
			break;	//平衡模式  蓝色的LED 1S 闪两次
	case Quad_Hold_Position: LED_Set_Blink(Blue,100,100,3);
			break;  //定点模式  蓝色的LED 1S 闪三次
	
}
	
}
//--------------------相应的飞行模块PWM输出运算-------------------------------------
switch(Quadrotor_Mode){
 //检测当前状态,

case Quad_ESC_Cal:  //ESC 电子调速器校准  必须在手动模式下进行
		 PWM_Output_ESC_Calibration(); //输出 3通道PWM输入的值.
		 calcount++;
		 if(calcount > PWM_Hz){

		 	calcount = 0;
			LED_Set_Blink(Red,150,150,3);  //提示正在设置电调行程
			
} 
			if(Read_Mode() != Quad_Manual){

			Quadrotor_Mode = Quad_Manual;
			
}
		break ;

case Quad_Manual: //手动模式

//-------------手动时 控制信号的混合-----------------------
		 THROTTLE = (int16_t)(PWM_Input_CH3); //取油门量
		 PID_PITCH = (int16_t)(PWM_Input_CH2 - PWM_Input_Offset); //取pitch
		 PID_ROLL = (int16_t)(PWM_Input_CH1 - PWM_Input_Offset); //取Roll
		 PID_YAW =  PWM_Input_CH4 - PWM_Input_Offset; //取Yaw
		 //手动模式 加入陀螺仪增稳功能
		 Roll_Pitch_Yaw_RatePID(0,0,0);
		 PID_YAW   += YawRate.PID_out;
		 PID_PITCH += PitchRate.PID_out;
		 PID_ROLL += RollRate.PID_out;
		 PWM_Write_Motors(); //写输出到PWM信号。
		 break ;

case Quad_Level_Lock:	//平衡飞行状态

		//---------------遥控信号的转换----------------------------------
		//将通道3 输入做为油门量
		Quad_THR = (int16_t)(PWM_Input_CH3); //取油门量

		//将通道1 输入做为Roll的目标角度
		//将通道2 输入做为Pitch的目标角度
		Target_Roll = (int16_t)(PWM_Input_CH1 - PWM_Input_Offset);
		Target_Pitch = (int16_t)(PWM_Input_CH2 - PWM_Input_Offset);

		//将通道4 输入做为目标航向输入	[<1400us || >1600]有效		
		if((PWM_Input_CH4 > (int16_t)(PWM_Input_Offset+100))||
			(PWM_Input_CH4 < (int16_t)(PWM_Input_Offset-100))	
			){

		ftemp = (float)(PWM_Input_CH4 - PWM_Input_Offset); //[-500,+500]
		Target_Yaw += (ftemp / 500.0f)*0.2f; //[-0.2,+0.2] 小溪++等于大河
		if(Target_Yaw >180.0f)Target_Yaw = Target_Yaw-360.0f;	//转[-180.0,+180.0]
			else if(Target_Yaw <-180.0f)Target_Yaw = 360.0f + Target_Yaw;
		
}

		//---------------计算PWM输出------------------------------------
		 Roll_Pitch_Yaw_AnglePID( Target_Roll/10.0f , Target_Pitch/10.0f , Target_Yaw);
		 if(PWM_Input_CH3 > (int16_t)(MINTHROTTLE+(MAXTHROTTLE-MINTHROTTLE)/10)){

		 	//遥控器油门大于10% 定高才会起作用,防止误动作引起电机转动
		 	Quad_THR += Auto_High_PID(Tartget_hight , 1); //目标爬升率为0,
			
}else{

			pidReset(&Climb);  //
			
}
		 PID_PITCH = PitchRate.PID_out;
		 PID_ROLL = RollRate.PID_out;
		 PID_YAW = YawRate.PID_out;
		 THROTTLE = Quad_THR;
		 //写输出到比较器  改写PWM输出脉宽值

		 PWM_Write_Motors(); //写输出到PWM通道  {
调用PWM_Output.c的子程序
}
		 
		 break ;

case Quad_Hold_Position:	//定点飞行状态

		//---------------遥控信号的转换----------------------------------
		//将通道3 输入做为油门量  
		Quad_THR = (int16_t)(PWM_Input_CH3); //取油门量

		//将通道1 输入做为Roll的目标角度
		//将通道2 输入做为Pitch的目标角度
		Target_Roll = (int16_t)(PWM_Input_CH1 - PWM_Input_Offset);
		Target_Pitch = (int16_t)(PWM_Input_CH2 - PWM_Input_Offset);

		//将通道4 输入做为目标航向输入	[<1400 || >1600]有效		
		if((PWM_Input_CH4 > (int16_t)(PWM_Input_Offset+100))||
			(PWM_Input_CH4 < (int16_t)(PWM_Input_Offset-100))	
			){

		ftemp = (float)(PWM_Input_CH4 - PWM_Input_Offset); //[-500,+500]
		Target_Yaw += (ftemp / 500.0f)*0.2f; //[-0.2,+0.2] 小溪++等于大河
		if(Target_Yaw >180.0f)Target_Yaw = Target_Yaw-360.0f;	//转[-180.0,+180.0]
			else if(Target_Yaw <-180.0f)Target_Yaw = 360.0f + Target_Yaw;
		
}
	
		//------------------------定点飞行-----------------------------	

		 if(Home_Ready){
    //是否保存了家点。Home_Ready变量在GPS.c中定义
		 	if(GPS_Update){
	//GPS数据有更新。
		 	GPS_Position_Hold();  //重新计算定点值。
			GPS_Update = 0;			
			
}
		 	Target_Roll += GPS_ROLL; //如果没有安装GPS,程序不会运行到这里
		 	Target_Pitch += GPS_PITCH;
		 
}else{

		 	Position_Hold_Reset();
		 
}
		//---------------通过PID计算PWM输出------------------------------------
		 if(PWM_Input_CH3 > (int16_t)(MINTHROTTLE+(MAXTHROTTLE-MINTHROTTLE)/10)){

		 	//遥控器油门大于10% 定高才会起作用,防止误动作引起电机转动
		 	Quad_THR += Auto_High_PID(Tartget_hight , 0);
		 	
}else{

				pidReset(&Climb);  //
		 	
}
		 Roll_Pitch_Yaw_AnglePID( Target_Roll/10.0f , Target_Pitch/10.0f , Target_Yaw);
		 PID_PITCH = PitchRate.PID_out;
		 PID_ROLL = RollRate.PID_out;
		 PID_YAW = YawRate.PID_out;
		 THROTTLE = Quad_THR;
		 //写输出到比较器  改写PWM输出脉宽值

		 PWM_Write_Motors(); //写输出到PWM通道  {
调用PWM_Output.c的子程序
}
		 
		 break ;

	default :
		Quadrotor_Mode = Quad_Manual;
		PWM_Output_Set_default();
		break ;	

  
}

}

void PWM_Save_Offset(void){

   PWM_Offset_Roll = PWM_Input_CH1 + PWM_Offset_Roll - 1500;
   PWM_Offset_Pitch = PWM_Input_CH2 + PWM_Offset_Pitch - 1500; 
   PWM_Offset_Yaw = PWM_
...
...
(Not finished, please download and read the complete file)
			
...
Expand> <Close

Want complete source code? Download it here

Point(s): 1

Download
0 lines left, continue to read
Sponsored links

File list

Tips: You can preview the content of files by clicking file names^_^
Name Size Date
01.97 kB
Autoploit.pdf77.58 kB2013-02-21|20:43
Captain_F405.map339.77 kB2014-10-09|10:09
Captain_F405.plg75.58 kB2013-04-12|21:31
Captain_F405.sct479.00 B2013-03-05|13:51
Captain_F405.tra3.18 kB2013-03-05|14:44
Captain_F405.uvgui.Administrator682.33 kB2014-02-28|14:33
Captain_F405.uvgui.haoyun91.55 kB2014-12-28|17:15
Captain_F405.uvgui.ZhaoLong109.23 kB2014-10-09|10:16
Captain_F405.uvgui_Administrator.bak679.11 kB2014-02-27|12:40
Captain_F405.uvgui_haoyun.bak88.97 kB2014-12-28|17:13
Captain_F405.uvgui_ZhaoLong.bak106.65 kB2014-10-06|20:29
Captain_F405.uvopt29.78 kB2014-12-28|17:15
Captain_F405.uvproj24.15 kB2014-02-20|23:08
Captain_F405_Captain.dep43.10 kB2014-12-28|17:15
Captain_F405_Target79.00 B2013-03-05|12:09
Captain_F405_uvopt.bak29.78 kB2014-12-28|17:13
Captain_F405_uvproj.bak24.58 kB2013-12-24|16:53
01.97 kB
common.h847.00 B2014-02-20|22:47
datamap.h2.27 kB2013-12-14|13:44
fly_config.h1.29 kB2013-09-03|15:25
debug.ini112.00 B2012-12-03|19:51
ExtDll.iex19.00 B2013-03-05|14:23
01.97 kB
cc936.c707.25 kB2013-12-24|16:07
diskio.c4.79 kB2013-12-24|17:38
diskio.h1.82 kB2013-12-24|11:26
FAT_driver.c1.40 kB2013-12-25|13:38
FAT_driver.h444.00 B2013-12-24|14:12
ff.c139.67 kB2013-12-25|12:30
ff.h11.79 kB2013-12-25|12:30
ffconf.h7.45 kB2013-12-24|16:35
integer.h936.00 B2013-12-24|16:10
SD_card.h2.42 kB2013-12-24|11:26
SD_init.c7.96 kB2013-12-25|11:56
01.97 kB
01.97 kB
STM32ADC.c6.19 kB2012-12-03|20:45
STM32ADC.h415.00 B2013-03-05|12:15
01.97 kB
AT45DB.c16.05 kB2014-02-27|10:06
AT45DB.h3.24 kB2014-02-27|10:06
Autoploit.pdf77.58 kB2013-02-21|20:43
01.97 kB
GCS_Protocol.c18.85 kB2013-12-24|14:23
GCS_Protocol.h1.56 kB2013-12-09|13:19
01.97 kB
GPS.c15.68 kB2014-01-06|11:56
GPS.h1.40 kB2014-01-06|11:56
01.97 kB
HMC5883L.c10.59 kB2013-12-14|14:11
HMC5883L.h1.35 kB2013-05-28|11:44
01.97 kB
IMU.c10.80 kB2014-02-27|11:23
IMU.h620.00 B2013-12-14|13:54
01.97 kB
LED.c4.09 kB2013-12-18|20:30
LED.h1.02 kB2013-12-24|15:03
01.97 kB
LSM303D.c5.37 kB2014-02-27|11:36
LSM303D.h5.49 kB2014-02-26|22:21
01.97 kB
Fmath.c1.15 kB2013-09-02|22:02
Fmath.h589.00 B2012-09-17|22:46
01.97 kB
MAX21000.c2.97 kB2014-02-26|22:20
MAX21000.h452.00 B2014-02-26|22:20
01.97 kB
MPU6050.c11.41 kB2013-12-24|10:19
MPU6050.h14.56 kB2013-09-09|20:38
01.97 kB
MS5611.c11.44 kB2013-12-16|19:11
MS5611.h1.71 kB2013-09-02|21:00
01.97 kB
Pid.c3.45 kB2013-12-14|12:31
pid.h1.40 kB2014-02-27|11:16
01.97 kB
PWM_Input.c10.95 kB2013-09-02|20:20
PWM_Input.h817.00 B2013-03-05|12:16
01.97 kB
PWM_Output.c12.37 kB2013-12-24|14:23
PWM_Output.h1.90 kB2013-12-24|14:23
01.97 kB
Quadrotor.c20.75 kB2014-02-27|11:23
Quadrotor.h1.18 kB2013-12-16|21:00
01.97 kB
delay.c2.75 kB2013-12-09|14:32
delay.h285.00 B2013-03-05|12:18
IOI2C.c9.49 kB2012-11-16|09:37
IOI2C.h2.10 kB2013-03-05|12:18
SPI3.c3.16 kB2014-02-27|11:55
SPI3.h327.00 B2013-12-18|21:07
01.97 kB
UART1.c9.06 kB2013-12-16|20:54
UART1.h676.00 B2013-12-09|13:19
01.97 kB
Ultrasonic.c6.64 kB2013-12-18|20:16
Ultrasonic.h387.00 B2013-03-05|13:51
01.97 kB
OSQMem.c4.30 kB2013-12-09|13:46
OSQMem.h1,006.00 B2013-12-09|13:42
USART1ConFig.c12.31 kB2013-12-09|12:05
USART1DMATX.c7.08 kB2014-12-23|11:42
USART1DMATX.h697.00 B2013-12-09|13:48
JLinkLog.txt203.61 kB2014-09-30|11:55
JLinkSettings.ini573.00 B2013-03-05|13:51
01.97 kB
01.97 kB
01.97 kB
arm_common_tables.h1.09 kB2011-10-28|10:31
arm_math.h234.69 kB2011-10-28|10:31
core_cm0.h31.20 kB2011-10-28|10:31
core_cm3.h68.09 kB2011-10-28|10:31
core_cm4.h77.42 kB2011-10-28|10:31
core_cm4_simd.h23.42 kB2011-10-28|10:31
core_cmFunc.h15.32 kB2011-10-28|10:31
core_cmInstr.h15.73 kB2011-10-28|10:31
misc.h6.63 kB2011-10-28|10:31
stm32f4xx_adc.h31.66 kB2011-10-28|10:31
stm32f4xx_can.h26.55 kB2011-10-28|10:31
stm32f4xx_crc.h2.23 kB2011-10-28|10:31
stm32f4xx_cryp.h12.23 kB2011-10-28|10:31
stm32f4xx_dac.h14.47 kB2011-10-28|10:31
stm32f4xx_dbgmcu.h4.07 kB2011-10-28|10:31
stm32f4xx_dcmi.h12.54 kB2011-10-28|10:31
stm32f4xx_dma.h28.08 kB2011-10-28|10:31
stm32f4xx_exti.h7.70 kB2011-10-28|10:31
stm32f4xx_flash.h14.12 kB2011-10-28|10:31
stm32f4xx_fsmc.h26.41 kB2011-10-28|10:31
stm32f4xx_gpio.h17.16 kB2011-10-28|10:31
stm32f4xx_hash.h8.74 kB2011-10-28|10:31
stm32f4xx_i2c.h30.78 kB2011-10-28|10:31
stm32f4xx_iwdg.h4.09 kB2011-10-28|10:31
stm32f4xx_pwr.h5.88 kB2011-10-28|10:31
stm32f4xx_rcc.h24.16 kB2011-10-28|10:31
stm32f4xx_rng.h3.74 kB2011-10-28|10:31
stm32f4xx_rtc.h39.47 kB2011-10-28|10:31
stm32f4xx_sdio.h22.11 kB2011-10-28|10:31
stm32f4xx_spi.h20.17 kB2011-10-28|10:31
stm32f4xx_syscfg.h6.93 kB2011-10-28|10:31
stm32f4xx_tim.h50.35 kB2011-10-28|10:31
stm32f4xx_usart.h17.26 kB2011-10-28|10:31
stm32f4xx_wwdg.h3.33 kB2011-10-28|10:31
01.97 kB
misc.c11.05 kB2011-10-28|10:31
stm32f4xx_adc.c66.67 kB2011-10-28|10:31
stm32f4xx_can.c58.52 kB2011-10-28|10:31
stm32f4xx_crc.c3.38 kB2011-10-28|10:31
stm32f4xx_cryp.c31.82 kB2011-10-28|10:31
stm32f4xx_cryp_aes.c21.14 kB2011-10-28|10:31
stm32f4xx_cryp_des.c9.14 kB2011-10-28|10:31
stm32f4xx_cryp_tdes.c9.85 kB2011-10-28|10:31
stm32f4xx_dac.c26.36 kB2011-10-28|10:31
stm32f4xx_dbgmcu.c6.52 kB2011-10-28|10:31
stm32f4xx_dcmi.c18.42 kB2011-10-28|10:31
stm32f4xx_dma.c51.33 kB2011-10-28|10:31
stm32f4xx_exti.c9.98 kB2011-10-28|10:31
stm32f4xx_flash.c37.02 kB2011-10-28|10:31
stm32f4xx_fsmc.c40.78 kB2011-10-28|10:31
stm32f4xx_gpio.c20.53 kB2011-10-28|10:31
stm32f4xx_hash.c25.48 kB2011-10-28|10:31
stm32f4xx_hash_md5.c9.32 kB2011-10-28|10:31
stm32f4xx_hash_sha1.c9.51 kB2011-10-28|10:31
stm32f4xx_i2c.c51.45 kB2011-10-28|10:31
stm32f4xx_iwdg.c9.32 kB2011-10-28|10:31
stm32f4xx_pwr.c24.67 kB2011-10-28|10:31
stm32f4xx_rcc.c72.90 kB2011-10-28|10:31
stm32f4xx_rng.c13.68 kB2011-10-28|10:31
stm32f4xx_rtc.c101.15 kB2011-10-28|10:31
stm32f4xx_sdio.c38.77 kB2011-10-28|10:31
stm32f4xx_spi.c50.51 kB2011-10-28|10:31
stm32f4xx_syscfg.c7.30 kB2011-10-28|10:31
stm32f4xx_tim.c122.42 kB2011-10-28|10:31
stm32f4xx_usart.c55.35 kB2011-10-28|10:31
stm32f4xx_wwdg.c10.41 kB2011-10-28|10:31
01.97 kB
01.97 kB
at45db.crf456.46 kB2014-09-30|11:21
at45db.d2.91 kB2014-09-30|11:21
at45db.o500.02 kB2014-09-30|11:21
Captain_F405.axf660.84 kB2014-10-09|10:09
Captain_F405.hex166.59 kB2014-10-09|10:09
Captain_F405.htm203.60 kB2014-10-09|10:09
Captain_F405.lnp1.34 kB2014-10-09|10:09
Captain_F405.plg203.00 B2014-12-28|17:15
Captain_F405.sct479.00 B2013-04-12|20:18
Captain_F405.tra4.46 kB2014-10-09|10:09
cc936.crf6.64 kB2013-12-24|16:12
cc936.d132.00 B2013-12-24|16:12
cc936.o185.13 kB2013-12-24|16:12
cc936.__i943.00 B2013-12-24|16:12
delay.crf416.12 kB2014-09-30|11:22
delay.d1.73 kB2014-09-30|11:22
delay.o440.09 kB2014-09-30|11:22
diskio.crf425.14 kB2014-09-30|11:22
diskio.d1.87 kB2014-09-30|11:22
diskio.o451.17 kB2014-09-30|11:22
ExtDll.iex19.00 B2014-02-27|10:02
fat_driver.crf425.40 kB2014-09-30|11:22
fat_driver.d2.08 kB2014-09-30|11:22
fat_driver.o452.20 kB2014-09-30|11:22
ff.crf37.21 kB2014-09-30|11:22
ff.d199.00 B2014-09-30|11:22
ff.o98.88 kB2014-09-30|11:22
fmath.crf417.35 kB2014-09-30|11:22
fmath.d1.76 kB2014-09-30|11:22
fmath.o443.82 kB2014-09-30|11:22
gcs_protocol.crf460.35 kB2014-09-30|11:22
gcs_protocol.d3.53 kB2014-09-30|11:22
gcs_protocol.o497.80 kB2014-09-30|11:22
gps.crf456.10 kB2014-09-30|11:21
gps.d2.89 kB2014-09-30|11:21
gps.o499.18 kB2014-09-30|11:21
hmc5883l.crf455.14 kB2014-02-20|22:47
hmc5883l.d3.06 kB2014-02-20|22:47
hmc5883l.o498.88 kB2014-02-20|22:47
hmc5883l.__i990.00 B2014-02-20|22:47
imu.crf457.10 kB2014-09-30|11:21
imu.d2.77 kB2014-09-30|11:21
imu.o495.16 kB2014-09-30|11:21
ioi2c.crf421.17 kB2014-09-30|11:22
ioi2c.d1.78 kB2014-09-30|11:22
ioi2c.o459.73 kB2014-09-30|11:22
led.crf418.07 kB2014-09-30|11:21
led.d1.69 kB2014-09-30|11:21
led.o441.42 kB2014-09-30|11:21
lsm303d.crf453.87 kB2014-09-30|11:22
lsm303d.d3.03 kB2014-09-30|11:22
lsm303d.o488.79 kB2014-09-30|11:22
main.crf463.30 kB2014-09-30|11:21
main.d2.99 kB2014-09-30|11:21
main.o492.65 kB2014-09-30|11:21
max21000.crf453.19 kB2014-09-30|11:22
max21000.d3.09 kB2014-09-30|11:22
max21000.o483.38 kB2014-09-30|11:22
misc.crf416.02 kB2014-09-30|11:21
misc.d1.66 kB2014-09-30|11:21
misc.o440.02 kB2014-09-30|11:21
mpu6050.crf470.47 kB2014-02-20|22:47
mpu6050.d3.05 kB2014-02-20|22:47
mpu6050.o510.14 kB2014-02-20|22:47
mpu6050.__i985.00 B2014-02-20|22:47
ms5611.crf455.11 kB2014-09-30|11:21
ms5611.d2.91 kB2014-09-30|11:21
ms5611.o499.88 kB2014-09-30|11:21
osqmem.crf420.87 kB2014-09-30|11:22
osqmem.d1.82 kB2014-09-30|11:22
osqmem.o443.41 kB2014-09-30|11:22
pid.crf3.46 kB2014-09-30|11:22
pid.d84.00 B2014-09-30|11:22
pid.o24.76 kB2014-09-30|11:22
pwm_input.crf420.54 kB2014-09-30|11:21
pwm_input.d1.99 kB2014-09-30|11:21
pwm_input.o453.93 kB2014-09-30|11:21
pwm_output.crf458.55 kB2014-09-30|11:22
pwm_output.d3.32 kB2014-09-30|11:22
pwm_output.o490.34 kB2014-09-30|11:22
quadrotor.crf458.90 kB2014-09-30|11:22
quadrotor.d3.26 kB2014-09-30|11:22
quadrotor.o502.92 kB2014-09-30|11:22
sd_init.crf421.82 kB2014-09-30|11:22
sd_init.d1.83 kB2014-09-30|11:22
sd_init.o464.06 kB2014-09-30|11:22
spi3.crf452.77 kB2014-09-30|11:22
spi3.d2.79 kB2014-09-30|11:22
spi3.o479.34 kB2014-09-30|11:22
startup_stm32f4xx.d59.00 B2014-09-30|11:21
startup_stm32f4xx.o7.73 kB2014-09-30|11:21
stm32adc.crf416.63 kB2014-09-30|11:21
stm32adc.d1.84 kB2014-09-30|11:21
stm32adc.o444.02 kB2014-09-30|11:21
stm32f4xx_adc.crf422.59 kB2014-09-30|11:21
stm32f4xx_adc.d2.01 kB2014-09-30|11:21
stm32f4xx_adc.o487.58 kB2014-09-30|11:21
stm32f4xx_dbgmcu.crf415.63 kB2014-09-30|11:21
stm32f4xx_dbgmcu.d2.12 kB2014-09-30|11:21
stm32f4xx_dbgmcu.o440.03 kB2014-09-30|11:21
stm32f4xx_dcmi.crf417.75 kB2014-09-30|11:21
stm32f4xx_dcmi.d2.04 kB2014-09-30|11:21
stm32f4xx_dcmi.o453.16 kB2014-09-30|11:21
stm32f4xx_dma.crf422.48 kB2014-09-30|11:21
stm32f4xx_dma.d2.01 kB2014-09-30|11:21
stm32f4xx_dma.o461.39 kB2014-09-30|11:21
stm32f4xx_exti.crf416.59 kB2014-09-30|11:21
stm32f4xx_exti.d2.04 kB2014-09-30|11:21
stm32f4xx_exti.o444.07 kB2014-09-30|11:21
stm32f4xx_flash.crf420.54 kB2014-09-30|11:21
stm32f4xx_flash.d2.08 kB2014-09-30|11:21
stm32f4xx_flash.o475.34 kB2014-09-30|11:21
stm32f4xx_gpio.crf417.89 kB2014-09-30|11:21
stm32f4xx_gpio.d2.04 kB2014-09-30|11:21
stm32f4xx_gpio.o453.07 kB2014-09-30|11:21
stm32f4xx_it.crf415.49 kB2014-09-30|11:21
stm32f4xx_it.d1.97 kB2014-09-30|11:21
stm32f4xx_it.o444.81 kB2014-09-30|11:21
stm32f4xx_pwr.crf417.44 kB2014-09-30|11:21
stm32f4xx_pwr.d2.01 kB2014-09-30|11:21
stm32f4xx_pwr.o449.88 kB2014-09-30|11:21
stm32f4xx_rcc.crf424.55 kB2014-09-30|11:21
stm32f4xx_rcc.d2.01 kB2014-09-30|11:21
stm32f4xx_rcc.o495.22 kB2014-09-30|11:21
stm32f4xx_rng.crf415.92 kB2014-09-30|11:21
stm32f4xx_rng.d2.01 kB2014-09-30|11:21
stm32f4xx_rng.o443.76 kB2014-09-30|11:21
stm32f4xx_rtc.crf433.11 kB2014-09-30|11:21
stm32f4xx_rtc.d2.01 kB2014-09-30|11:21
stm32f4xx_rtc.o516.53 kB2014-09-30|11:21
stm32f4xx_sdio.crf419.94 kB2014-09-30|11:21
stm32f4xx_sdio.d2.04 kB2014-09-30|11:21
stm32f4xx_sdio.o474.00 kB2014-09-30|11:21
stm32f4xx_spi.crf420.43 kB2014-09-30|11:21
stm32f4xx_spi.d2.01 kB2014-09-30|11:21
stm32f4xx_spi.o468.64 kB2014-09-30|11:21
stm32f4xx_syscfg.crf416.09 kB2014-09-30|11:21
stm32f4xx_syscfg.d2.12 kB2014-09-30|11:21
stm32f4xx_syscfg.o441.90 kB2014-09-30|11:21
stm32f4xx_tim.crf435.53 kB2014-09-30|11:21
stm32f4xx_tim.d2.01 kB2014-09-30|11:21
stm32f4xx_tim.o563.30 kB2014-09-30|11:21
stm32f4xx_usart.crf420.95 kB2014-09-30|11:21
stm32f4xx_usart.d2.08 kB2014-09-30|11:21
stm32f4xx_usart.o474.46 kB2014-09-30|11:21
stm32f4xx_wwdg.crf416.16 kB2014-09-30|11:21
stm32f4xx_wwdg.d2.04 kB2014-09-30|11:21
stm32f4xx_wwdg.o443.88 kB2014-09-30|11:21
system_stm32f4xx.crf417.16 kB2014-09-30|11:21
system_stm32f4xx.d2.06 kB2014-09-30|11:21
system_stm32f4xx.o438.50 kB2014-09-30|11:21
uart1.crf455.77 kB2014-09-30|11:22
uart1.d2.97 kB2014-09-30|11:22
uart1.o490.19 kB2014-09-30|11:22
ultrasonic.crf420.98 kB2014-09-30|11:22
ultrasonic.d2.09 kB2014-09-30|11:22
ultrasonic.o451.47 kB2014-09-30|11:22
usart1dmatx.crf418.27 kB2014-09-30|11:22
usart1dmatx.d2.02 kB2014-09-30|11:22
usart1dmatx.o444.86 kB2014-09-30|11:22
Protel76.01 kB2013-11-26|21:29
01.97 kB
startup_stm32f4xx.s28.82 kB2011-10-28|10:31
system_stm32f4xx.c21.36 kB2013-06-17|19:09
system_stm32f4xx.h2.05 kB2011-10-28|10:31
startup_stm32f4xx.lst73.83 kB2014-09-30|11:21
01.97 kB
main.c9.82 kB2014-02-27|11:56
main.h1.86 kB2012-11-15|11:46
Read_Me.txt6.96 kB2013-12-16|21:46
stm32f4xx_conf.h3.71 kB2013-03-05|14:42
stm32f4xx_it.c4.34 kB2013-03-05|12:05
stm32f4xx_it.h2.00 kB2013-03-05|12:06
...
Sponsored links

Quadrotor.c (12.86 MB)

Need 1 point
Your Point(s)

Your Point isn't enough.

Get point immediately by PayPal

More(Debit card / Credit card / PayPal Credit / Online Banking)

Submit your source codes. Get more point

LOGIN

Don't have an account? Register now
Need any help?
Mail to: support@codeforge.com

切换到中文版?

CodeForge Chinese Version
CodeForge English Version

Where are you going?

^_^"Oops ...

Sorry!This guy is mysterious, its blog hasn't been opened, try another, please!
OK

Warm tip!

CodeForge to FavoriteFavorite by Ctrl+D