此代码支持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;
-
- }
- }
复制代码
所有资料51hei提供下载:
四轴飞控代码(周寒宇).rar
(438.35 KB, 下载次数: 1321)
|