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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2490|回復: 0
打印 上一主題 下一主題
收起左側

飛控代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:253045 發表于 2017-11-24 15:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  • /*
  • ******************* (C) COPYRIGHT 2015 Air Nano Team ***************************
  • * 模塊名稱 : 主程序模塊
  • * 文件名   :main.c
  • * 描述     :系統初始化
  • * 實驗平臺 :HT_Hawk
  • * 庫版本   :ST3.5.0
  • * 作者     :Air Nano Team
  • *********************************************************************************
  • */
  • #include "board_config.h"
  • /*
  • *********************************************************************************************************
  • *        函 數 名: main
  • *        功能說明: c程序入口
  • *        形    參:無
  • *        返 回 值: 錯誤代碼(無需處理)
  • *********************************************************************************************************
  • */
  • int main(void)
  • {
  •         // boot_loader 相關配置
  •     Bootloader_Set();              //單片機引導程序
  •         // 硬件初始化
  •         InitBoard();
  •         // 傳感器初始化
  •         Sensor_Init();
  •         // 加載參數
  •         paramLoad();
  •         /* 開定時中斷 */
  •     EnTIMER;
  •         while(1)
  •         {
  •      loop();   //主函數循環執行部分  與上位機通訊  刷新OLED屏  保存修改的PID數據
  •         }
  • }
  • 復制代碼MultiRotor_app.c
  • /******************** (C) COPYRIGHT 2014 Air Nano Team ***************************
  • * 文件名  :INIT.c
  • * 描述    :系統初始化
  • * 實驗平臺:HT_Hawk
  • * 庫版本  :ST3.5.0
  • * 作者    :Air Nano Team
  • **********************************************************************************/
  • #include "include.h"
  • #include "MultiRotor_app.h"
  • fp32 Battery_Voltage;
  • Flag_t flag;    //【標志的結構體定義】 此處可以分開定義
  • ////*************************************************
  • ////********* struct {
  • ////              u8 MpuExist;      // MPU存在
  • ////              u8 MagExist;      // MAG存在
  • ////              u8 NrfExist;      // NRF存在
  • ////              u8 MagIssue;      // MAG有問題
  • ////
  • ////          u8 ARMED;         // 電機解鎖
  • ////              u8 LockYaw;       // 航向鎖定
  • ////          u8 calibratingA;  // 加速度采集
  • ////              u8 calibratingM;  // 磁力計采集
  • ////              u8 calibratingM_pre; //磁力計預采集
  • ////
  • ////              u8 ParamSave;     // 參數保存標志
  • ////
  • ////              u8 Loop_250Hz;
  • ////              u8 Loop_100Hz;
  • ////              u8 Loop_10Hz;
  • ////********* }Flag_t;
  • ////************************************************
  • /*====================================================================================================*/
  • /*====================================================================================================*
  • **函數 : Bootloader_Set
  • **功能 : BOOT相關設置
  • **輸入 : None
  • **輸出 : None
  • **備注 : None
  • **====================================================================================================*/
  • /*====================================================================================================*/
  • void Bootloader_Set(void)
  • {
  •          u16 i;
  •         // 設置偏移量
  •         SCB->VTOR = FLASH_BASE | FLASH_EXCURSION ;
  •         i=0x0505;
  •         STMFLASH_Write(pro_FALG_ADD,&i,1);
  • }
  • /*====================================================================================================*/
  • /*====================================================================================================*
  • **函數 : Sensor_Init
  • **功能 : ===============================【硬件初始化】===============================================//
  • **輸入 : None
  • **輸出 : None
  • **備注 : None
  • **====================================================================================================*/
  • /*====================================================================================================*/
  • void InitBoard(void)
  • {
  •         delay_init(72);     //延時函數初始化  使用SYSCLK  分為  【ms級延時  us級延時 普通軟件延時】
  •         Nvic_Init();        //中斷初始化      time.c中 配置     【TIM5-系統時基  TIM2 TIM3輸入捕捉 提供八通道】
  •         /* 初始化USB設備 */
  •     bsp_InitUsb();      //與上位機通訊使用
  •         ADC1_Init();
  •         OLED_Init();
  •         I2C_INIT();
  •     LED_GPIO_Config();
  •         USART1_Config();
  •         TIM5_Config();      //TIM5 2ms中斷一次 提供系統時基
  •         PWM_OUT_Config();   //PWM輸出控制無刷電機 【TIM1 TIM4 提供八路PWM輸出】
  •         PWM_IN_Config();    //PWM輸入捕捉初始化 使用TIM2輸入捕捉
  •         NRF24L01_Init();
  •          LED_SHOW();
  •          FLASH_Unlock();
  •          EE_Init();          //EEPROM掉電保存數據
  • }
  • /*====================================================================================================*/
  • /*====================================================================================================*
  • **函數 : Sensor_Init
  • **功能 : ================================【傳感器初始化】============================================//
  • **輸入 : None
  • **輸出 : None
  • **備注 : None
  • **====================================================================================================*/
  • /*====================================================================================================*/
  • void Sensor_Init(void)
  • {
  •         flag.MpuExist = InitMPU6050();     //讀取初始化成功標志
  •         flag.MagExist = Init_HMC5883L();   //傳感器初始化成功   傳感器存在的標志
  •     flag.NrfExist = NRF24L01_Check();
  •     NRF24L01_Mode(1);                  //設置24l01為發送模式
  •         OLED_P6x8Str(0,1,"ROLL:");         //OLED顯示三個姿態歐拉角數值
  •         OLED_P6x8Str(0,2,"PITCH:");
  •         OLED_P6x8Str(0,3,"YAW:");
  •         OLED_P6x8Str(0,5,"YAW:");          //四個遙控器通道數據
  •         OLED_P6x8Str(0,6,"THR:");
  •         OLED_P6x8Str(56,5,"ROLL:");
  •         OLED_P6x8Str(56,6,"PITCH:");
  • }
  • /*====================================================================================================*/
  • /*====================================================================================================*
  • **函數 : Screen_Update
  • **功能 : 屏幕數據更新
  • **輸入 : None
  • **輸出 : None
  • **備注 : None
  • **====================================================================================================*/
  • /*====================================================================================================*/
  • void Screen_Update(void)
  • {
  •         Dis_Float(1,40,AngE.Roll,1);
  •         Dis_Float(2,40,AngE.Pitch,1);
  •         Dis_Float(3,40,AngE.Yaw,1);
  •     OLED_4num(4,5,RC_Data.YAW);
  •         OLED_4num(4,6,RC_Data.THROTTLE);
  •         OLED_4num(57,5,RC_Data.ROLL);
  •         OLED_4num(58,6,RC_Data.PITCH);
  • }
  • //***********************************【劃分時間片,分配任務】******************************************//
  • //======================================【主循環執行函數】============================================//
  • void loop(void)
  • {                               //姿態解算 串級PID控制 在中斷函數中執行 每2ms執行一次
  •         // 250HZ
  •         if(flag.Loop_250Hz){
  •                 flag.Loop_250Hz=0;
  •                 UsbCmdPro();                //USB接收上位機數據 【4ms執行一次】
  •     FailSafeLEDAlarm();         //閃爍燈
  •         }
  •         // 100HZ
  •         if(flag.Loop_100Hz){
  •                 flag.Loop_100Hz=0;
  •     mavlink();                  //飛控板循環發送數據到上位機 【10ms執行一次】
  •                 Screen_Update();            //更新OLED三個歐拉角和四個通道遙控器數據
  •         }
  •                 if(flag.Loop_10Hz){
  •                 flag.Loop_10Hz=0;
  •     EE_SAVE_Attitude_PID();     //如果調節了PID參數則用EEPROM保存數據 【100ms執行一次】
  •         }
  • }
  • /*====================================================================================================*/
  • /*====================================================================================================*
  • **函數 : Time_slice
  • **功能 :【時間片】
  • **輸入 : None
  • **輸出 : None
  • **備注 : None
  • **====================================================================================================*/
  • /*====================================================================================================*/
  • void Time_slice(void)      //每中斷一次執行一次本函數
  • {
  •   static u16 tick[3]={0,0,0};
  •         tick[0]++;tick[1]++;tick[2]++;
  •         if(tick[0]>=2){          //4ms    2次中斷  一次2ms
  •                  tick[0] = 0;
  •                  flag.Loop_250Hz = 1;
  •         }
  •   if(tick[1]>=5){          //10ms   5次
  •                 tick[1] = 0;
  •                 flag.Loop_100Hz = 1;
  •         }
  •   if(tick[2] >= 50)        {      //100ms  50次
  •                 tick[2] = 0;
  •                 flag.Loop_10Hz = 1;
  •         }
  • }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久一区 | 在线免费视频一区 | 羞羞视频在线观免费观看 | 九九热精品视频 | 国产精品欧美一区二区 | 久艹av | 成人免费福利 | 久久久久久久一区二区 | 久久久91精品国产一区二区精品 | www.99热这里只有精品 | 亚洲自拍偷拍免费视频 | 中文字幕一区二区三区在线观看 | 国产精品成人一区二区三区 | 久久精品99国产精品日本 | 精品在线观看一区二区 | 一区二区三区四区在线播放 | 日本亚洲一区二区 | 免费看黄视频网站 | 精品一区二区不卡 | 亚洲黄色一区二区三区 | 草草在线观看 | 91tv在线观看 | 国产精品99久久久久久宅男 | 成人欧美一区二区三区在线观看 | 日本理论片好看理论片 | 97色在线视频 | 成人伊人 | 欧美二区三区 | 夜色www国产精品资源站 | 欧美v日韩v | 国产精品一区二区三区久久 | 亚洲激情av | 国产精品一区二区av | caoporn国产| 日韩精品av一区二区三区 | 国产精品99 | 午夜精品一区二区三区在线视频 | 欧美a区 | 三级特黄特色视频 | 国产精久久久久久 | 免费国产一区 |