找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3888|回复: 0
打印 上一主题 下一主题
收起左侧

基于stm32的无人机飞控代码

[复制链接]
跳转到指定楼层
楼主
ID:675888 发表于 2019-12-28 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这一款无人机基于STM32F103RCT6,用了mpu9250等多个传感器,多级PID,数据融合等算法,最终成型。

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"

  5. #include "timer.h"
  6. #include "mpu6050.h"
  7. #include "inv_mpu.h"
  8. #include "inv_mpu_dmp_motion_driver.h"
  9. #include "motor.h"
  10. #include "bmp280.h"
  11. #include "task.h"
  12. #include "exti.h"
  13. #include "nrf.h"
  14. #include "gps.h"
  15. #include "oled.h"
  16. #include "Altitude_Control.h"
  17. #include "pid.h"
  18. #include "hmc5883l.h"
  19. #include "motor.h"
  20. #include "sbus.h"
  21. #include "data_transfer.h"
  22. #include "ms5611.h"
  23. #include "flow.h"
  24. extern u8 sign;
  25. extern u8 gnrmc[100];
  26. u8 i;
  27. u16 count,count1;
  28. extern u8 USART_RX;
  29. u8 flow_lose;
  30. u8 flow_count=0;
  31. extern u8 p_control;
  32. u8 step_num=0;
  33. u8 count_1ms=0;
  34. u8 count_2ms=0;
  35. u8 count_5ms=0;
  36. u8 count_20ms=0;
  37. int main(void)
  38. {       
  39.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  40.         delay_init();                               
  41.         uart_init(115200);///????????????????????????????????         
  42.         led_init();
  43.         sbus_init();
  44.          flow_init();
  45.         //gps_init(115200);
  46.         while(!MS5611_Init()){led2=!led2;}
  47.         while(MPU_Init()){led2=!led2;}
  48.         //while(mpu_dmp_init()){led2=!led2;}
  49.   //while(bmp280_init()){led2=!led2;}       
  50.         led2=1;
  51.   mpu_offset();
  52.         altitude_init();
  53.         Init_HMC5883();
  54.   //EXTIX_Init();
  55.         NRF24L01_Init();
  56.         while(NRF24L01_Check()){led2=!led2;}
  57. //        NRF24L01_RX_Mode();
  58.         NRF24L01_TX_Mode();led2=1;
  59.         motor_init();
  60.         //KEY_Init();
  61.         //motor_test();
  62.         state_pid_init();
  63.         altitude_pid_init();
  64.         tim3_int_init(99,719);
  65.         MS5611_Read_Prom();
  66.   //TIM2_Cap_Init(0XFFFF,72-1);        //以1Mhz的频率计数       
  67.          while(1)
  68.         {
  69.                 printf("\r\n");
  70.                 if(count_1ms>=1)
  71.                         {
  72.                                 count_1ms=0;
  73.                                 task_1000hz();
  74.                                                                 count++;
  75.                         if(count==500){led1=!led1;count=0;}
  76.                   }
  77.                 if(count_2ms>=2)
  78.                   {
  79.                                 count_2ms=0;
  80.                           task_500hz();
  81.                                
  82.                   }
  83.                 if(count_5ms>=5)
  84.                   {
  85.                                 count_5ms=0;
  86.                           task_200hz();
  87.                   }
  88.           if(count_20ms>=20)
  89.                   {
  90.                                 count_20ms=0;
  91.                           task_50hz();
  92.                   }
  93. //                if(sign){GPS_RMC_Parse();sign=0;}
  94. //                if(USART_RX==1)
  95. //                {
  96. //                        flow_count=0;
  97. //                        read_flow();
  98. //                        USART_RX=0;
  99. //                        count1++;
  100. //                        if(count1==25){led2=!led2;count1=0;}
  101. //                }
  102. //                if(count_40ms>=50)
  103. //                {
  104. //                        count_40ms=0;
  105. //                        trig=1;
  106. //                        delay_us(25);
  107. //                        trig=0;
  108. //                }
  109.         }
  110. }
复制代码

所有资料51hei提供下载:
无人机稳定版.7z (281.72 KB, 下载次数: 100)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表