久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11143|回復: 21
收起左側

恒拓飛控源碼加詳細注釋 stm32+mpu6050

  [復制鏈接]
ID:165841 發表于 2017-2-28 12:01 | 顯示全部樓層 |閱讀模式
恒拓飛控源碼 stm32+mpu6050
0.png
完整的程序源碼下載:
HT-Hawk飛控源代碼.zip (1.1 MB, 下載次數: 245)


下面提供部分程序來預覽:
飛控的主程序:
  1. /*
  2. ******************* (C) COPYRIGHT 2015 Air Nano Team ***************************
  3. * 模塊名稱 : 主程序模塊
  4. * 文件名   :main.c
  5. * 描述     :系統初始化         
  6. * 實驗平臺 :HT_Hawk
  7. * 庫版本   :ST3.5.0
  8. * 作者     :Air Nano Team
  9. *********************************************************************************
  10. */

  11. #include "board_config.h"

  12. /*
  13. *********************************************************************************************************
  14. *        函 數 名: main
  15. *        功能說明: c程序入口
  16. *        形    參:無
  17. *        返 回 值: 錯誤代碼(無需處理)
  18. *********************************************************************************************************
  19. */

  20. int main(void)
  21. {
  22.         // boot_loader 相關配置
  23.     Bootloader_Set();              //單片機引導程序
  24.         
  25.         // 硬件初始化
  26.         InitBoard();        

  27.         // 傳感器初始化
  28.         Sensor_Init();
  29.         
  30.         // 加載參數
  31.         paramLoad();
  32.         
  33.         /* 開定時中斷 */
  34.     EnTIMER;   

  35.         while(1)
  36.         {
  37.      loop();   //主函數循環執行部分  與上位機通訊  刷新OLED屏  保存修改的PID數據
  38.         }                        
  39. }
復制代碼
MultiRotor_app.c
  1. /******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
  2. * 文件名  :INIT.c
  3. * 描述    :系統初始化         
  4. * 實驗平臺:HT_Hawk
  5. * 庫版本  :ST3.5.0
  6. * 作者    :Air Nano Team
  7. **********************************************************************************/
  8. #include "include.h"
  9. #include "MultiRotor_app.h"

  10. fp32 Battery_Voltage;
  11. Flag_t flag;    //【標志的結構體定義】 此處可以分開定義
  12. ////*************************************************
  13. ////********* struct {
  14. ////              u8 MpuExist;      // MPU存在
  15. ////              u8 MagExist;      // MAG存在
  16. ////              u8 NrfExist;      // NRF存在
  17. ////              u8 MagIssue;      // MAG有問題
  18. ////
  19. ////          u8 ARMED;         // 電機解鎖
  20. ////              u8 LockYaw;       // 航向鎖定      
  21. ////          u8 calibratingA;  // 加速度采集
  22. ////              u8 calibratingM;  // 磁力計采集
  23. ////              u8 calibratingM_pre; //磁力計預采集
  24. ////              
  25. ////              u8 ParamSave;     // 參數保存標志
  26. ////        
  27. ////              u8 Loop_250Hz;
  28. ////              u8 Loop_100Hz;
  29. ////              u8 Loop_10Hz;
  30. ////********* }Flag_t;
  31. ////************************************************
  32. /*====================================================================================================*/
  33. /*====================================================================================================*
  34. **函數 : Bootloader_Set
  35. **功能 : BOOT相關設置
  36. **輸入 : None
  37. **輸出 : None
  38. **備注 : None
  39. **====================================================================================================*/
  40. /*====================================================================================================*/
  41. void Bootloader_Set(void)
  42. {
  43.          u16 i;
  44.         
  45.         // 設置偏移量
  46.         SCB->VTOR = FLASH_BASE | FLASH_EXCURSION ;
  47.         
  48.         i=0x0505;
  49.         STMFLASH_Write(pro_FALG_ADD,&i,1);   
  50. }
  51. /*====================================================================================================*/
  52. /*====================================================================================================*
  53. **函數 : Sensor_Init
  54. **功能 : ===============================【硬件初始化】===============================================//
  55. **輸入 : None
  56. **輸出 : None
  57. **備注 : None
  58. **====================================================================================================*/
  59. /*====================================================================================================*/
  60. void InitBoard(void)
  61. {
  62.         delay_init(72);     //延時函數初始化  使用SYSCLK  分為  【ms級延時  us級延時 普通軟件延時】
  63.         Nvic_Init();        //中斷初始化      time.c中 配置     【TIM5-系統時基  TIM2 TIM3輸入捕捉 提供八通道】
  64.         
  65.         /* 初始化USB設備 */
  66.     bsp_InitUsb();      //與上位機通訊使用
  67.          
  68.         ADC1_Init();        
  69.         OLED_Init();
  70.         I2C_INIT();
  71.     LED_GPIO_Config();
  72.         USART1_Config();
  73.         TIM5_Config();      //TIM5 2ms中斷一次 提供系統時基
  74.         PWM_OUT_Config();   //PWM輸出控制無刷電機 【TIM1 TIM4 提供八路PWM輸出】
  75.         PWM_IN_Config();    //PWM輸入捕捉初始化 使用TIM2輸入捕捉
  76.         NRF24L01_Init();
  77.          LED_SHOW();
  78.          FLASH_Unlock();
  79.          EE_Init();          //EEPROM掉電保存數據
  80. }
  81. /*====================================================================================================*/
  82. /*====================================================================================================*
  83. **函數 : Sensor_Init
  84. **功能 : ================================【傳感器初始化】============================================//
  85. **輸入 : None
  86. **輸出 : None
  87. **備注 : None
  88. **====================================================================================================*/
  89. /*====================================================================================================*/
  90. void Sensor_Init(void)   
  91. {
  92.         flag.MpuExist = InitMPU6050();     //讀取初始化成功標志  
  93.         flag.MagExist = Init_HMC5883L();   //傳感器初始化成功   傳感器存在的標志
  94.     flag.NrfExist = NRF24L01_Check();
  95.     NRF24L01_Mode(1);                  //設置24l01為發送模式
  96.         

  97.         OLED_P6x8Str(0,1,"ROLL:");         //OLED顯示三個姿態歐拉角數值
  98.         OLED_P6x8Str(0,2,"PITCH:");
  99.         OLED_P6x8Str(0,3,"YAW:");
  100.    
  101.         OLED_P6x8Str(0,5,"YAW:");          //四個遙控器通道數據
  102.         OLED_P6x8Str(0,6,"THR:");
  103.         OLED_P6x8Str(56,5,"ROLL:");
  104.         OLED_P6x8Str(56,6,"PITCH:");
  105. }

  106. /*====================================================================================================*/
  107. /*====================================================================================================*
  108. **函數 : Screen_Update
  109. **功能 : 屏幕數據更新
  110. **輸入 : None
  111. **輸出 : None
  112. **備注 : None
  113. **====================================================================================================*/
  114. /*====================================================================================================*/
  115. void Screen_Update(void)
  116. {
  117.         Dis_Float(1,40,AngE.Roll,1);
  118.         Dis_Float(2,40,AngE.Pitch,1);
  119.         Dis_Float(3,40,AngE.Yaw,1);
  120.     OLED_4num(4,5,RC_Data.YAW);
  121.         OLED_4num(4,6,RC_Data.THROTTLE);
  122.         OLED_4num(57,5,RC_Data.ROLL);
  123.         OLED_4num(58,6,RC_Data.PITCH);
  124. }
  125. //***********************************【劃分時間片,分配任務】******************************************//

  126. //======================================【主循環執行函數】============================================//
  127. void loop(void)
  128. {                               //姿態解算 串級PID控制 在中斷函數中執行 每2ms執行一次
  129.         // 250HZ
  130.         if(flag.Loop_250Hz){
  131.                 flag.Loop_250Hz=0;
  132.                 UsbCmdPro();                //USB接收上位機數據 【4ms執行一次】
  133.     FailSafeLEDAlarm();         //閃爍燈
  134.         }
  135.         
  136.         // 100HZ
  137.         if(flag.Loop_100Hz){
  138.                 flag.Loop_100Hz=0;
  139.     mavlink();                  //飛控板循環發送數據到上位機 【10ms執行一次】
  140.                 Screen_Update();            //更新OLED三個歐拉角和四個通道遙控器數據
  141.         }
  142.                 if(flag.Loop_10Hz){
  143.                 flag.Loop_10Hz=0;
  144.     EE_SAVE_Attitude_PID();     //如果調節了PID參數則用EEPROM保存數據 【100ms執行一次】
  145.         }
  146. }

  147. /*====================================================================================================*/
  148. /*====================================================================================================*
  149. **函數 : Time_slice
  150. **功能 :【時間片】
  151. **輸入 : None
  152. **輸出 : None
  153. **備注 : None
  154. **====================================================================================================*/
  155. /*====================================================================================================*/
  156. void Time_slice(void)      //每中斷一次執行一次本函數
  157. {
  158.   static u16 tick[3]={0,0,0};
  159.         
  160.         tick[0]++;tick[1]++;tick[2]++;
  161.         
  162.         if(tick[0]>=2){          //4ms    2次中斷  一次2ms
  163.                  tick[0] = 0;
  164.                  flag.Loop_250Hz = 1;
  165.         }
  166.   if(tick[1]>=5){          //10ms   5次
  167.                 tick[1] = 0;
  168.                 flag.Loop_100Hz = 1;
  169.         }        
  170.   if(tick[2] >= 50)        {      //100ms  50次
  171.                 tick[2] = 0;
  172.                 flag.Loop_10Hz = 1;
  173.         }
  174. }
復制代碼


評分

參與人數 1黑幣 +5 收起 理由
zhougr + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:28823 發表于 2017-3-8 10:13 | 顯示全部樓層
哇哇哇,大愛樓主的分享
回復

使用道具 舉報

ID:200355 發表于 2017-5-13 17:05 | 顯示全部樓層
正在做這方面的東西看著還挺好的
回復

使用道具 舉報

ID:95072 發表于 2017-8-2 22:58 | 顯示全部樓層
挺好,贊
回復

使用道具 舉報

ID:242523 發表于 2017-10-24 18:45 | 顯示全部樓層
特別好,贊
回復

使用道具 舉報

ID:253045 發表于 2017-11-24 15:25 | 顯示全部樓層
有幫助
回復

使用道具 舉報

ID:260577 發表于 2017-12-12 11:58 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:263025 發表于 2017-12-18 11:02 | 顯示全部樓層
謝謝大佬
回復

使用道具 舉報

ID:329684 發表于 2018-5-14 16:08 | 顯示全部樓層
謝謝樓主的分享
回復

使用道具 舉報

ID:331360 發表于 2018-5-20 23:05 來自觸屏版 | 顯示全部樓層
用stm32f4系列做的嗎
回復

使用道具 舉報

ID:294865 發表于 2018-5-23 16:18 | 顯示全部樓層
謝謝,真的不錯
回復

使用道具 舉報

ID:381265 發表于 2018-7-31 14:04 | 顯示全部樓層
樓主大愛
回復

使用道具 舉報

ID:381427 發表于 2018-7-31 20:25 | 顯示全部樓層
是STM32F103的嗎,我需要f103的代碼
回復

使用道具 舉報

ID:396751 發表于 2018-9-11 23:49 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:247778 發表于 2018-12-29 21:32 | 顯示全部樓層
有原理圖嗎,真心求
回復

使用道具 舉報

ID:151626 發表于 2019-3-29 16:56 | 顯示全部樓層
最近在找這方面的資料  下載看一下
回復

使用道具 舉報

ID:502704 發表于 2019-4-1 20:30 | 顯示全部樓層
很需要剛剛好奈斯
回復

使用道具 舉報

ID:519377 發表于 2019-4-23 10:46 | 顯示全部樓層
太給力了!
回復

使用道具 舉報

ID:261045 發表于 2019-9-9 16:25 | 顯示全部樓層
謝謝!非常好的代碼,代碼非常完整!ok!待會再看代碼
回復

使用道具 舉報

ID:392405 發表于 2019-9-17 23:18 | 顯示全部樓層
感謝樓主分享
回復

使用道具 舉報

ID:557635 發表于 2019-9-23 12:03 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:611355 發表于 2019-9-29 11:52 | 顯示全部樓層
一直想找飛控系統,終于找到了,大愛
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人玩人人干 | 免费一区二区三区 | 秋霞精品 | 免费黄色的网站 | 成年人的视频免费观看 | 欧美成人a| 91porn在线 | 欧美日韩亚洲一区 | 好姑娘高清在线观看电影 | 免费av电影网站 | 91视频在线 | 亚洲精品一级 | 黄色片大全在线观看 | www亚洲免费国内精品 | 一区二区三区亚洲 | 在线第一页 | 偷拍自拍在线观看 | 中文字幕日韩欧美一区二区三区 | 欧美福利影院 | 欧美在线视频观看 | 亚洲福利片 | 国产精产国品一二三产区视频 | 国产区一区| 中文字幕一区二区在线观看 | 成人网av | 国产精品久久 | 黄色免费看 | 久久偷人 | tube国产| 91佛爷在线观看 | 中文字幕国产在线 | 人人看人人爽 | 欧美性一级 | 欧美一区二区免费视频 | 国产一区二区精品在线观看 | 真人女人一级毛片免费播放 | 日韩av免费在线观看 | 最新毛片网站 | 亚洲精品天堂 | www.日本国产| 日韩在线综合 |