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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10950|回復(fù): 21
打印 上一主題 下一主題
收起左側(cè)

恒拓飛控源碼加詳細(xì)注釋 stm32+mpu6050

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
恒拓飛控源碼 stm32+mpu6050

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


下面提供部分程序來(lái)預(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. * 庫(kù)版本   :ST3.5.0
  8. * 作者     :Air Nano Team
  9. *********************************************************************************
  10. */

  11. #include "board_config.h"

  12. /*
  13. *********************************************************************************************************
  14. *        函 數(shù) 名: main
  15. *        功能說(shuō)明: c程序入口
  16. *        形    參:無(wú)
  17. *        返 回 值: 錯(cuò)誤代碼(無(wú)需處理)
  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.         /* 開(kāi)定時(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. * 庫(kù)版本  :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)體定義】 此處可以分開(kāi)定義
  12. ////*************************************************
  13. ////********* struct {
  14. ////              u8 MpuExist;      // MPU存在
  15. ////              u8 MagExist;      // MAG存在
  16. ////              u8 NrfExist;      // NRF存在
  17. ////              u8 MagIssue;      // MAG有問(wèn)題
  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輸出控制無(wú)刷電機(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ù)制代碼


評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:28823 發(fā)表于 2017-3-8 10:13 | 只看該作者
哇哇哇,大愛(ài)樓主的分享
回復(fù)

使用道具 舉報(bào)

板凳
ID:200355 發(fā)表于 2017-5-13 17:05 | 只看該作者
正在做這方面的東西看著還挺好的
回復(fù)

使用道具 舉報(bào)

地板
ID:95072 發(fā)表于 2017-8-2 22:58 | 只看該作者
挺好,贊
回復(fù)

使用道具 舉報(bào)

5#
ID:242523 發(fā)表于 2017-10-24 18:45 | 只看該作者
特別好,贊
回復(fù)

使用道具 舉報(bào)

6#
ID:253045 發(fā)表于 2017-11-24 15:25 | 只看該作者
有幫助
回復(fù)

使用道具 舉報(bào)

7#
ID:260577 發(fā)表于 2017-12-12 11:58 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

8#
ID:263025 發(fā)表于 2017-12-18 11:02 | 只看該作者
謝謝大佬
回復(fù)

使用道具 舉報(bào)

9#
ID:329684 發(fā)表于 2018-5-14 16:08 | 只看該作者
謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

10#
ID:331360 發(fā)表于 2018-5-20 23:05 來(lái)自手機(jī) | 只看該作者
用stm32f4系列做的嗎
回復(fù)

使用道具 舉報(bào)

11#
ID:294865 發(fā)表于 2018-5-23 16:18 | 只看該作者
謝謝,真的不錯(cuò)
回復(fù)

使用道具 舉報(bào)

12#
ID:381265 發(fā)表于 2018-7-31 14:04 | 只看該作者
樓主大愛(ài)
回復(fù)

使用道具 舉報(bào)

13#
ID:381427 發(fā)表于 2018-7-31 20:25 | 只看該作者
是STM32F103的嗎,我需要f103的代碼
回復(fù)

使用道具 舉報(bào)

14#
ID:396751 發(fā)表于 2018-9-11 23:49 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

15#
ID:247778 發(fā)表于 2018-12-29 21:32 | 只看該作者
有原理圖嗎,真心求
回復(fù)

使用道具 舉報(bào)

16#
ID:151626 發(fā)表于 2019-3-29 16:56 | 只看該作者
最近在找這方面的資料  下載看一下
回復(fù)

使用道具 舉報(bào)

17#
ID:502704 發(fā)表于 2019-4-1 20:30 | 只看該作者
很需要?jiǎng)倓偤媚嗡?/td>
回復(fù)

使用道具 舉報(bào)

18#
ID:519377 發(fā)表于 2019-4-23 10:46 | 只看該作者
太給力了!!
回復(fù)

使用道具 舉報(bào)

19#
ID:261045 發(fā)表于 2019-9-9 16:25 | 只看該作者
謝謝!非常好的代碼,代碼非常完整!!ok!待會(huì)再看代碼
回復(fù)

使用道具 舉報(bào)

20#
ID:392405 發(fā)表于 2019-9-17 23:18 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

21#
ID:557635 發(fā)表于 2019-9-23 12:03 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報(bào)

22#
ID:611355 發(fā)表于 2019-9-29 11:52 | 只看該作者
一直想找飛控系統(tǒng),終于找到了,大愛(ài)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区在线 | 黄色成人免费在线观看 | 久久久久久久91 | 欧美激情一区二区三区 | 免费激情网站 | 午夜在线视频一区二区三区 | 99视频精品 | 欧美久久久久久久 | 色av一区 | 在线免费激情视频 | 国产精品99久久久久久动医院 | 国产精品一区二区三区四区五区 | 天天亚洲 | 日批日韩在线观看 | 国产精品二区三区 | 91色综合| 国产精品欧美一区二区三区不卡 | 一区二区三区欧美 | 亚洲精品1区2区3区 91免费看片 | 国产精品中文在线 | 亚av在线 | 国产精品视频免费看 | 天堂综合网久久 | 日韩欧美网 | 免费在线成人 | 日韩在线中文 | 国产精品免费在线 | 国产精品久久久久久久久久妞妞 | 国产一区二区影院 | 亚洲精品在线观 | 欧美韩一区二区三区 | 九九精品在线 | 欧美视频偷拍 | 精品九九九 | 日韩二三区 | 日韩国产欧美一区 | 在线观看国产网站 | 亚洲狠狠 | 国产精品国产精品国产专区不卡 | 亚洲精品免费观看 | 97精品超碰一区二区三区 |