欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
領航者飛控源碼 stm32 注釋相當的詳細 易于學習
[打印本頁]
作者:
空心杯ice
時間:
2017-3-2 22:36
標題:
領航者飛控源碼 stm32 注釋相當的詳細 易于學習
匿名的領航者飛控源碼,是用stm32單片機做的 注釋很詳細。
0.png
(99.01 KB, 下載次數: 117)
下載附件
2017-3-3 01:19 上傳
0.png
(67.23 KB, 下載次數: 114)
下載附件
2017-3-3 01:22 上傳
完整代碼下載:
領航者飛控源碼.zip
(10.73 MB, 下載次數: 392)
2017-3-2 22:35 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
飛控的初始化代碼:
/******************** (C) COPYRIGHT 2014 ANO Tech ********************************
* 作者 :匿名科創
* 文件名 :init.c
* 描述 :飛控初始化
**********************************************************************************/
#include "include.h"
#include "pwm_out.h"
#include "mpu6050.h"
#include "i2c_soft.h"
#include "led.h"
#include "ctrl.h"
#include "ms5611.h"
#include "ak8975.h"
#include "ultrasonic.h"
u8 All_Init()
{
NVIC_PriorityGroupConfig(NVIC_GROUP); //中斷優先級組別設置
SysTick_Configuration(); //滴答時鐘
I2c_Soft_Init(); //初始化模擬I2C
PWM_IN_Init(); //初始化接收機采集功能
PWM_Out_Init(400); //初始化電調輸出功能
Usb_Hid_Init(); //飛控usb接口的hid初始化
MS5611_Init(); //氣壓計初始化
Delay_ms(400); //延時
MPU6050_Init(20); //加速度計、陀螺儀初始化,配置20hz低通
LED_Init(); //LED功能初始化
Usart2_Init(500000); //串口2初始化,函數參數為波特率
//Usart2_Init(256000);
//TIM_INIT();
Para_Init(); //參數初始化
Delay_ms(100); //延時
Ultrasonic_Init(); //超聲波初始化
Cycle_Time_Init();
ak8975_ok = !(ANO_AK8975_Run());
if( !mpu6050_ok )
{
LED_MPU_Err();
}
else if( !ak8975_ok )
{
LED_Mag_Err();
}
else if( !ms5611_ok )
{
LED_MS5611_Err();
}
return (1);
}
/******************* (C) COPYRIGHT 2014 ANO TECH *****END OF FILE************/
復制代碼
飛控遙控程序:
/******************** (C) COPYRIGHT 2014 ANO Tech ********************************
* 作者 :匿名科創
* 文件名 :rc.c
* 描述 :遙控器通道數據處理
**********************************************************************************/
#include "include.h"
#include "rc.h"
#include "mymath.h"
#include "mpu6050.h"
s8 CH_in_Mapping[CH_NUM] = {0,1,2,3,4,5,6,7}; //通道映射
void CH_Mapping_Fun(u16 *in,u16 *Mapped_CH)
{
u8 i;
for( i = 0 ; i < CH_NUM ; i++ )
{
*( Mapped_CH + i ) = *( in + CH_in_Mapping[i] );
}
}
s16 CH[CH_NUM];
float CH_Old[CH_NUM];
float CH_filter[CH_NUM];
float CH_filter_Old[CH_NUM];
float CH_filter_D[CH_NUM];
u8 NS,CH_Error[CH_NUM];
u16 NS_cnt,CLR_CH_Error[CH_NUM];
s16 MAX_CH[CH_NUM] = {1900 ,1900 ,1900 ,1900 ,1900 ,1900 ,1900 ,1900 }; //搖桿最大
s16 MIN_CH[CH_NUM] = {1100 ,1100 ,1100 ,1100 ,1100 ,1100 ,1100 ,1100 }; //搖桿最小
char CH_DIR[CH_NUM] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 }; //搖桿方向
#define CH_OFFSET 500
float filter_A;
void RC_Duty( float T , u16 tmp16_CH[CH_NUM] )
{
u8 i;
s16 CH_TMP[CH_NUM];
static u16 Mapped_CH[CH_NUM];
if( NS == 1 )
{
CH_Mapping_Fun(tmp16_CH,Mapped_CH);
}
else if( NS == 2 )
{
CH_Mapping_Fun(RX_CH,Mapped_CH);
}
for( i = 0;i < CH_NUM ; i++ )
{
if( (u16)Mapped_CH[i] > 2500 || (u16)Mapped_CH[i] < 500 )
{
CH_Error[i]=1;
CLR_CH_Error[i] = 0;
}
else
{
CLR_CH_Error[i]++;
if( CLR_CH_Error[i] > 200 )
{
CLR_CH_Error[i] = 2000;
CH_Error[i] = 0;
}
}
if( NS == 1 || NS == 2 )
{
if( CH_Error[i] ) //單通道數據錯誤
{
}
else
{
//CH_Max_Min_Record();
CH_TMP[i] = ( Mapped_CH[i] ); //映射拷貝數據,大約 1000~2000
if( MAX_CH[i] > MIN_CH[i] )
{
if( !CH_DIR[i] )
{
CH[i] = LIMIT ( (s16)( ( CH_TMP[i] - MIN_CH[i] )/(float)( MAX_CH[i] - MIN_CH[i] ) *1000 - CH_OFFSET ), -500, 500); //歸一化,輸出+-500
}
else
{
CH[i] = - LIMIT ( (s16)( ( CH_TMP[i] - MIN_CH[i] )/(float)( MAX_CH[i] - MIN_CH[i] ) *1000 - CH_OFFSET ), -500, 500); //歸一化,輸出+-500
}
}
else
{
fly_ready = 0;
}
}
}
else //未接接收機或無信號(遙控關閉或丟失信號)
{
}
//=================== filter ===================================
// 全局輸出,CH_filter[],0橫滾,1俯仰,2油門,3航向 范圍:+-500
//=================== filter ===================================
filter_A = 3.14f *20 *T;
if( ABS(CH_TMP[i] - CH_filter[i]) <100 )
{
CH_filter[i] += filter_A *(CH[i] - CH_filter[i]) ;
}
else
{
CH_filter[i] += 0.5f *filter_A *( CH[i] - CH_filter[i]) ;
}
// CH_filter[i] = Fli_Tmp;
CH_filter_D[i] = ( CH_filter[i] - CH_filter_Old[i] );
CH_filter_Old[i] = CH_filter[i];
CH_Old[i] = CH[i];
}
//======================================================================
Fly_Ready(T); //解鎖判斷
//======================================================================
if(++NS_cnt>200) // 400ms 未插信號線。
{
NS_cnt = 0;
NS = 0;
}
}
u8 fly_ready = 0;
s16 ready_cnt=0;
void Fly_Ready(float T)
{
if( CH_filter[2] < -400 ) //油門小于10%
{
if( fly_ready && ready_cnt != -1 ) //解鎖完成,且已退出解鎖上鎖過程
{
//ready_cnt += 1000 *T;
}
#if(USE_TOE_IN_UNLOCK)
if( CH_filter[3] < -400 )
{
if( CH_filter[1] > 400 )
{
if( CH_filter[0] > 400 )
{
if( ready_cnt != -1 ) //外八滿足且退出解鎖上鎖過程
{
ready_cnt += 3 *1000 *T;
}
}
}
}
#else
if( CH_filter[3] < -400 ) //左下滿足
{
if( ready_cnt != -1 && fly_ready ) //判斷已經退出解鎖上鎖過程且已經解鎖
{
ready_cnt += 1000 *T;
}
}
else if( CH_filter[3] > 400 ) //右下滿足
{
if( ready_cnt != -1 && !fly_ready ) //判斷已經退出解鎖上鎖過程且已經上鎖
{
ready_cnt += 1000 *T;
}
}
#endif
else if( ready_cnt == -1 ) //4通道(CH[3])回位
{
ready_cnt=0;
}
}
else
{
ready_cnt=0;
}
if( ready_cnt > 1000 ) // 1000ms
{
ready_cnt = -1;
//fly_ready = ( fly_ready==1 ) ? 0 : 1 ;
if( !fly_ready )
{
fly_ready = 1;
mpu6050.Gyro_CALIBRATE = 2;
}
else
{
fly_ready = 0;
}
}
}
void Feed_Rc_Dog(u8 ch_mode) //400ms內必須調用一次
{
NS = ch_mode;
NS_cnt = 0;
}
//=================== filter ===================================
// 全局輸出,CH_filter[],0橫滾,1俯仰,2油門,3航向 范圍:+-500
//=================== filter ===================================
u8 height_ctrl_mode = 0;
extern u8 ultra_ok;
void Mode()
{
if( !fly_ready || CH_filter[THR]<-400 ) //只在上鎖時 以及 油門 低于10% 的時候,允許切換模式,否則只能向模式0切換。
{
if( CH_filter[AUX1] < -200 )
{
height_ctrl_mode = 0;
}
else if( CH_filter[AUX1] < 200 )
{
height_ctrl_mode = 1;
}
else
{
if(ultra_ok == 1)
{
height_ctrl_mode = 2;
}
else
{
height_ctrl_mode = 1;
}
}
}
else
{
if( CH_filter[AUX1] < -200 )
{
height_ctrl_mode = 0;
}
}
}
/******************* (C) COPYRIGHT 2014 ANO TECH *****END OF FILE************/
復制代碼
作者:
w9669
時間:
2017-5-3 13:45
支持一個
作者:
jxdianqi
時間:
2017-5-3 23:59
新來的,學習中,支持一個
作者:
long2004y
時間:
2017-5-6 15:15
好帖,一定要頂!
作者:
zhougr
時間:
2017-7-12 09:57
新來的,學習中,支持一個
作者:
kylin_origin
時間:
2017-7-15 09:50
好東西 感謝分享
作者:
17863934608
時間:
2017-7-16 12:28
好東西,謝謝樓主分享
作者:
lanhua520
時間:
2017-7-19 11:05
有配套的電路圖么?
作者:
865
時間:
2017-7-20 15:42
好東西,謝謝樓主分享
作者:
阿斯頓馬丁
時間:
2017-8-2 22:56
好東西
作者:
ssnd001
時間:
2017-8-22 20:59
新來的,學習中,支持一個
作者:
ssnd001
時間:
2017-8-22 21:02
東西很好,就是沒積分啊
作者:
rock2016
時間:
2017-12-28 09:07
這個東西好,回去要好好研究一下
作者:
DHuang
時間:
2017-12-28 15:19
支持一下
作者:
紅海盜qs
時間:
2018-1-4 09:20
用什么軟件寫的源碼阿?
作者:
liupudong
時間:
2018-2-3 18:16
支持一下
作者:
hjz1217283866
時間:
2018-2-26 10:09
支持 正需要
作者:
jessy8310
時間:
2018-3-5 14:22
支持,學習,學習。
作者:
老胖熊
時間:
2018-3-10 21:46
是否有電路原理圖?
作者:
少年0508
時間:
2018-5-1 20:15
感謝分享 下載學習學習
作者:
趙胖紙吖
時間:
2018-6-11 23:34
正在搞飛控,感謝樓主分享
作者:
swpswpswp
時間:
2018-9-26 08:41
非常感謝,最近剛好要搞接收機的程序,終于找到了
作者:
xsj1877578806
時間:
2018-10-12 00:38
感謝樓主分享
作者:
869996391
時間:
2019-3-7 19:23
贊一個
作者:
869996391
時間:
2019-3-7 19:24
感想樓主分享呀
作者:
hotice0
時間:
2019-6-28 23:32
好東西,很有幫助
作者:
2545407140
時間:
2019-11-12 20:07
可以可以
作者:
bryan_guan
時間:
2019-11-28 11:31
學習中,支持一個
作者:
joinxp
時間:
2019-12-2 08:52
不錯,剛好一邊學一邊做,自己做個無人機玩玩,就是不知道有沒有遙控部分的
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1