欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 恒拓飛控源碼加詳細(xì)注釋 stm32+mpu6050 [打印本頁]

作者: 1342853999    時(shí)間: 2017-2-28 12:01
標(biāo)題: 恒拓飛控源碼加詳細(xì)注釋 stm32+mpu6050
恒拓飛控源碼 stm32+mpu6050

完整的程序源碼下載:
HT-Hawk飛控源代碼.zip (1.1 MB, 下載次數(shù): 245)


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

  11. #include "board_config.h"

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

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

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

  35.         while(1)
  36.         {
  37.      loop();   //主函數(shù)循環(huán)執(zhí)行部分  與上位機(jī)通訊  刷新OLED屏  保存修改的PID數(shù)據(jù)
  38.         }                        
  39. }
復(fù)制代碼
MultiRotor_app.c
  1. /******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
  2. * 文件名  :INIT.c
  3. * 描述    :系統(tǒng)初始化         
  4. * 實(shí)驗(yàn)平臺(tái):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;    //【標(biāo)志的結(jié)構(gòu)體定義】 此處可以分開定義
  12. ////*************************************************
  13. ////********* struct {
  14. ////              u8 MpuExist;      // MPU存在
  15. ////              u8 MagExist;      // MAG存在
  16. ////              u8 NrfExist;      // NRF存在
  17. ////              u8 MagIssue;      // MAG有問題
  18. ////
  19. ////          u8 ARMED;         // 電機(jī)解鎖
  20. ////              u8 LockYaw;       // 航向鎖定      
  21. ////          u8 calibratingA;  // 加速度采集
  22. ////              u8 calibratingM;  // 磁力計(jì)采集
  23. ////              u8 calibratingM_pre; //磁力計(jì)預(yù)采集
  24. ////              
  25. ////              u8 ParamSave;     // 參數(shù)保存標(biāo)志
  26. ////        
  27. ////              u8 Loop_250Hz;
  28. ////              u8 Loop_100Hz;
  29. ////              u8 Loop_10Hz;
  30. ////********* }Flag_t;
  31. ////************************************************
  32. /*====================================================================================================*/
  33. /*====================================================================================================*
  34. **函數(shù) : Bootloader_Set
  35. **功能 : BOOT相關(guān)設(shè)置
  36. **輸入 : None
  37. **輸出 : None
  38. **備注 : None
  39. **====================================================================================================*/
  40. /*====================================================================================================*/
  41. void Bootloader_Set(void)
  42. {
  43.          u16 i;
  44.         
  45.         // 設(shè)置偏移量
  46.         SCB->VTOR = FLASH_BASE | FLASH_EXCURSION ;
  47.         
  48.         i=0x0505;
  49.         STMFLASH_Write(pro_FALG_ADD,&i,1);   
  50. }
  51. /*====================================================================================================*/
  52. /*====================================================================================================*
  53. **函數(shù) : Sensor_Init
  54. **功能 : ===============================【硬件初始化】===============================================//
  55. **輸入 : None
  56. **輸出 : None
  57. **備注 : None
  58. **====================================================================================================*/
  59. /*====================================================================================================*/
  60. void InitBoard(void)
  61. {
  62.         delay_init(72);     //延時(shí)函數(shù)初始化  使用SYSCLK  分為  【ms級(jí)延時(shí)  us級(jí)延時(shí) 普通軟件延時(shí)】
  63.         Nvic_Init();        //中斷初始化      time.c中 配置     【TIM5-系統(tǒng)時(shí)基  TIM2 TIM3輸入捕捉 提供八通道】
  64.         
  65.         /* 初始化USB設(shè)備 */
  66.     bsp_InitUsb();      //與上位機(jī)通訊使用
  67.          
  68.         ADC1_Init();        
  69.         OLED_Init();
  70.         I2C_INIT();
  71.     LED_GPIO_Config();
  72.         USART1_Config();
  73.         TIM5_Config();      //TIM5 2ms中斷一次 提供系統(tǒng)時(shí)基
  74.         PWM_OUT_Config();   //PWM輸出控制無刷電機(jī) 【TIM1 TIM4 提供八路PWM輸出】
  75.         PWM_IN_Config();    //PWM輸入捕捉初始化 使用TIM2輸入捕捉
  76.         NRF24L01_Init();
  77.          LED_SHOW();
  78.          FLASH_Unlock();
  79.          EE_Init();          //EEPROM掉電保存數(shù)據(jù)
  80. }
  81. /*====================================================================================================*/
  82. /*====================================================================================================*
  83. **函數(shù) : Sensor_Init
  84. **功能 : ================================【傳感器初始化】============================================//
  85. **輸入 : None
  86. **輸出 : None
  87. **備注 : None
  88. **====================================================================================================*/
  89. /*====================================================================================================*/
  90. void Sensor_Init(void)   
  91. {
  92.         flag.MpuExist = InitMPU6050();     //讀取初始化成功標(biāo)志  
  93.         flag.MagExist = Init_HMC5883L();   //傳感器初始化成功   傳感器存在的標(biāo)志
  94.     flag.NrfExist = NRF24L01_Check();
  95.     NRF24L01_Mode(1);                  //設(shè)置24l01為發(fā)送模式
  96.         

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

  106. /*====================================================================================================*/
  107. /*====================================================================================================*
  108. **函數(shù) : Screen_Update
  109. **功能 : 屏幕數(shù)據(jù)更新
  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. //***********************************【劃分時(shí)間片,分配任務(wù)】******************************************//

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

  147. /*====================================================================================================*/
  148. /*====================================================================================================*
  149. **函數(shù) : Time_slice
  150. **功能 :【時(shí)間片】
  151. **輸入 : None
  152. **輸出 : None
  153. **備注 : None
  154. **====================================================================================================*/
  155. /*====================================================================================================*/
  156. void Time_slice(void)      //每中斷一次執(zhí)行一次本函數(shù)
  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. }
復(fù)制代碼



作者: wecilau    時(shí)間: 2017-3-8 10:13
哇哇哇,大愛樓主的分享
作者: zhaoweias    時(shí)間: 2017-5-13 17:05
正在做這方面的東西看著還挺好的
作者: 阿斯頓馬丁    時(shí)間: 2017-8-2 22:58
挺好,贊
作者: anyegongjue2    時(shí)間: 2017-10-24 18:45
特別好,贊
作者: mumu清    時(shí)間: 2017-11-24 15:25
有幫助
作者: lzw1898    時(shí)間: 2017-12-12 11:58
感謝分享
作者: 家家家116127    時(shí)間: 2017-12-18 11:02
謝謝大佬
作者: abcqq    時(shí)間: 2018-5-14 16:08
謝謝樓主的分享
作者: plyl    時(shí)間: 2018-5-20 23:05
用stm32f4系列做的嗎
作者: dukecheng    時(shí)間: 2018-5-23 16:18
謝謝,真的不錯(cuò)
作者: 不多不少    時(shí)間: 2018-7-31 14:04
樓主大愛
作者: 2316    時(shí)間: 2018-7-31 20:25
是STM32F103的嗎,我需要f103的代碼
作者: 胡狼    時(shí)間: 2018-9-11 23:49
感謝樓主分享
作者: a2569808500    時(shí)間: 2018-12-29 21:32
有原理圖嗎,真心求
作者: zgf123456    時(shí)間: 2019-3-29 16:56
最近在找這方面的資料  下載看一下
作者: 韜略    時(shí)間: 2019-4-1 20:30
很需要?jiǎng)倓偤媚嗡?hr noshade size="2" width="100%" color="#808080"> 作者: luckylili    時(shí)間: 2019-4-23 10:46
太給力了。
作者: cduhuapu    時(shí)間: 2019-9-9 16:25
謝謝!非常好的代碼,代碼非常完整!!ok!待會(huì)再看代碼
作者: Flyyyy    時(shí)間: 2019-9-17 23:18
感謝樓主分享

作者: xinfan    時(shí)間: 2019-9-23 12:03
感謝分享
作者: baplin    時(shí)間: 2019-9-29 11:52
一直想找飛控系統(tǒng),終于找到了,大愛




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1