查看原文
其他

超强的四轴无人机飞控源代码,支持STM32所有系列(附项目资料)


本文所列代码支持STM32所有系列,实现的功能有:OLED显示、PID算法、姿态解算、卡尔曼滤波算法对数据整合、MPU6050、HMC磁力计、MS5611气压计、NRF24L01、GPS定位、超声波定高,亲测可以用,喜欢研究无人机的朋友可以参考一下此代码使用keli5编程。


希望参考学习的同学能够学到内容和代码风格,本代码支持STM32所有系列。


功能:OLED显示、PID算法、姿态解算、卡尔曼滤波算法对数据整合、MPU6050、HMC磁力计、MS5611气压计、NRF24L01、GPS定位、超声波定高等。


单片机源程序如下:


#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "mpu6050.h"

#include "hmc5883l.h"

#include "timer.h"

#include "led.h"

#include "i2c.h"

#include "Moto.h"

#include "Control.h"

#include "PWM_Capture.h"

#include "ms5611.h"

#include "nrf24l01.h"

#include "hcsr04.h"

#include "beep.h"

#include "GPS.h"

#include "oled.h"

extern uint32_t time3_cnt;

extern u8 FlyMode;

extern uint8_t Attitude;



 int main(void)

 {        

 

        u8 i;

        delay_init();                     //延时函数初始化          

        NVIC_Configuration();          //设置NVIC中断分组3:3位抢占优先级,3位响应优先级

        Control_Init();                                                                                                                                                                                                                   

        IIC_Init();

        LED_Init();

        PWM_Capture_Init(0xFFFF,71);  //1MHZ计数

        delay_ms(100);           //上电延时

        MPU6050_Init();

        HMC5883L_Init();

        HCSR04_Init();

        // GPS_Init();

         //UART3_Init(9600);

         //OLED_Init();

        TIM2_PWM_Init(1999,71); //周期2MS频率500HZ 计数频率1MHZ         计数到20000为20MS

        TIM5_Int_Init(499,71);//1Mhz的计数频率,计数到500为0.5ms

        TIM7_Int_Init(0xFFFF,71);//1Mhz的计数频率,1us时间度量

        TIM3_Int_Init(499,71);

        for(i=0;i<6;i++)        delay_ms(1000);                 //等待姿态稳定

        Moto_Init();

        delay_ms(1000);        

        delay_ms(1000);        

        delay_ms(1000);        

        delay_ms(1000);        

        delay_ms(1000);        

        while(1)

        { 

                if(time3_cnt<=2000)//10sec

                {                 HCSR04_Run(); //更新频率30HZ

                                Get_Attitude();                //姿态计算

                                FlyMode=1;

                                Fly_Control();//阻尼爬升                                

                

                }

                if(2000<time3_cnt&&time3_cnt<=6000)//10sec-30sec

                {                   HCSR04_Run(); //更新频率30HZ

                                Get_Attitude();                //姿态计算

                                FlyMode=2;//飞行                        

                                Fly_Control();                                

                }

                if(6000<time3_cnt&&time3_cnt<=8000)//30sec-40sec

                {                HCSR04_Run(); //更新频率30HZ

                                Get_Attitude();                //姿态计算

                                FlyMode=3;//飞行                        

                                Fly_Control();                                

                }

                  break;

        

        }

 }



为了帮助大家进一步学习,小编为大家准备了丰富的无人机资料,希望能帮助大家进行更好地学习~


海量无人机资料,限时免费等你拿!


1.  四轴飞控代码

2. STA3X无人机飞行控制系统(资料包)

3. 无人机MUC控制系统设计宝典TOP6

4. 无人机开发方案要领与电路图集锦

5. 无人机无线通信电路设计精华

6. 无人机系统解决方案集锦

 

 扫码进群,领取以上无上人机资料↓↓↓

 如扫码入群失败,请添加管理员微信:18123773580↓↓↓

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存