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

標(biāo)題: 四軸上位機(jī)和飛控經(jīng)典代碼分享 [打印本頁]

作者: 51hei學(xué)習(xí)技術(shù)中    時(shí)間: 2016-10-12 13:20
標(biāo)題: 四軸上位機(jī)和飛控經(jīng)典代碼分享
做四軸飛行器需要考慮到很多很多,其中上位機(jī)設(shè)計(jì)和PCB設(shè)計(jì)都是需要花費(fèi)大量精力的。

現(xiàn)在已經(jīng)有匿名四軸開發(fā)的開源上位機(jī)程序,集通信,調(diào)試,監(jiān)視,設(shè)置功能于一體。


同時(shí)附帶飛控通信協(xié)議,是我一直在用的四軸飛行器上位機(jī),開發(fā)中省了很大的功夫啊。之前一直在用的2.6版本的,前兩天去官網(wǎng)看到有更新,特地分享給大家



部分源碼:
  1. #include "stm32f10x.h"
  2. #include "BSP.H"

  3. void Nvic_Init(void)
  4. {
  5.         NVIC_InitTypeDef NVIC_InitStructure;
  6.         
  7.         /* NVIC_PriorityGroup */
  8.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  9.         //串口
  10.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  11.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_UART_P;
  12.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = NVIC_UART_S;
  13.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  14.         NVIC_Init(&NVIC_InitStructure);
  15.         //TIM3
  16.         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
  17.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_TIM3_P;
  18.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = NVIC_TIM3_S;
  19.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  20.         NVIC_Init(&NVIC_InitStructure);
  21. #ifdef CONTROL_USE_RC
  22.         //TIM4 pwm in
  23.         NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
  24.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = NVIC_TIM4_P;
  25.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = NVIC_TIM4_S;
  26.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  27.         NVIC_Init(&NVIC_InitStructure);
  28. #endif
  29. }
  30. #define EE_6050_ACC_X_OFFSET_ADDR        0
  31. #define EE_6050_ACC_Y_OFFSET_ADDR        1
  32. #define EE_6050_ACC_Z_OFFSET_ADDR        2
  33. #define EE_6050_GYRO_X_OFFSET_ADDR        3
  34. #define EE_6050_GYRO_Y_OFFSET_ADDR        4
  35. #define EE_6050_GYRO_Z_OFFSET_ADDR        5
  36. #define EE_PID_ROL_P        6
  37. #define EE_PID_ROL_I        7
  38. #define EE_PID_ROL_D        8
  39. #define EE_PID_PIT_P        9
  40. #define EE_PID_PIT_I        10
  41. #define EE_PID_PIT_D        11
  42. #define EE_PID_YAW_P        12
  43. #define EE_PID_YAW_I        13
  44. #define EE_PID_YAW_D        14
  45. //ErrorStatus  HSEStartUpStatus;
  46. //FLASH_Status FlashStatus;
  47. uint16_t VirtAddVarTab[NumbOfVar] = {0xAA00, 0xAA01, 0xAA02, 0xAA03, 0xAA04, 0xAA05, 0xAA06, 0xAA07, 0xAA08, 0xAA09,
  48.                                                                                                                                                  0xAA0A,0xAA0B, 0xAA0C, 0xAA0D, 0xAA0E,};
  49. uint16_t temp;
  50. void EE_INIT(void)
  51. {
  52.         EE_Init();
  53. }
  54. void EE_SAVE_ACC_OFFSET(void)
  55. {
  56.         EE_WriteVariable(VirtAddVarTab[EE_6050_ACC_X_OFFSET_ADDR], ACC_OFFSET.X);
  57.         EE_WriteVariable(VirtAddVarTab[EE_6050_ACC_Y_OFFSET_ADDR], ACC_OFFSET.Y);
  58.         EE_WriteVariable(VirtAddVarTab[EE_6050_ACC_Z_OFFSET_ADDR], ACC_OFFSET.Z);
  59. }
  60. void EE_READ_ACC_OFFSET(void)
  61. {
  62.         EE_ReadVariable(VirtAddVarTab[EE_6050_ACC_X_OFFSET_ADDR], &ACC_OFFSET.X);
  63.         EE_ReadVariable(VirtAddVarTab[EE_6050_ACC_Y_OFFSET_ADDR], &ACC_OFFSET.Y);
  64.         EE_ReadVariable(VirtAddVarTab[EE_6050_ACC_Z_OFFSET_ADDR], &ACC_OFFSET.Z);
  65. }
  66. void EE_SAVE_GYRO_OFFSET(void)
  67. {
  68.         EE_WriteVariable(VirtAddVarTab[EE_6050_GYRO_X_OFFSET_ADDR], GYRO_OFFSET.X);
  69.         EE_WriteVariable(VirtAddVarTab[EE_6050_GYRO_Y_OFFSET_ADDR], GYRO_OFFSET.Y);
  70.         EE_WriteVariable(VirtAddVarTab[EE_6050_GYRO_Z_OFFSET_ADDR], GYRO_OFFSET.Z);
  71. }
  72. void EE_READ_GYRO_OFFSET(void)
  73. {
  74.         EE_ReadVariable(VirtAddVarTab[EE_6050_GYRO_X_OFFSET_ADDR], &GYRO_OFFSET.X);
  75.         EE_ReadVariable(VirtAddVarTab[EE_6050_GYRO_Y_OFFSET_ADDR], &GYRO_OFFSET.Y);
  76.         EE_ReadVariable(VirtAddVarTab[EE_6050_GYRO_Z_OFFSET_ADDR], &GYRO_OFFSET.Z);
  77. }
  78. void EE_SAVE_PID(void)
  79. {
  80.         u16 _temp;
  81.         _temp = PID_ROL.P * 100;
  82.         EE_WriteVariable(VirtAddVarTab[EE_PID_ROL_P],_temp);
  83.         _temp = PID_ROL.I * 1000;
  84.         EE_WriteVariable(VirtAddVarTab[EE_PID_ROL_I],_temp);
  85.         _temp = PID_ROL.D * 100;
  86.         EE_WriteVariable(VirtAddVarTab[EE_PID_ROL_D],_temp);
  87.         _temp = PID_PIT.P * 100;
  88.         EE_WriteVariable(VirtAddVarTab[EE_PID_PIT_P],_temp);
  89.         _temp = PID_PIT.I * 1000;
  90.         EE_WriteVariable(VirtAddVarTab[EE_PID_PIT_I],_temp);
  91.         _temp = PID_PIT.D * 100;
  92.         EE_WriteVariable(VirtAddVarTab[EE_PID_PIT_D],_temp);
  93.         _temp = PID_YAW.P * 100;
  94.         EE_WriteVariable(VirtAddVarTab[EE_PID_YAW_P],_temp);
  95.         _temp = PID_YAW.I * 1000;
  96.         EE_WriteVariable(VirtAddVarTab[EE_PID_YAW_I],_temp);
  97.         _temp = PID_YAW.D * 100;
  98.         EE_WriteVariable(VirtAddVarTab[EE_PID_YAW_D],_temp);
  99. }
  100. void EE_READ_PID(void)
  101. {
  102.         u16 _temp;
  103.         EE_ReadVariable(VirtAddVarTab[EE_PID_ROL_P],&_temp);
  104.         PID_ROL.P = (float)_temp / 100;
  105.         EE_ReadVariable(VirtAddVarTab[EE_PID_ROL_I],&_temp);
  106.         PID_ROL.I = (float)_temp / 1000;
  107.         EE_ReadVariable(VirtAddVarTab[EE_PID_ROL_D],&_temp);
  108.         PID_ROL.D = (float)_temp / 100;
  109.         EE_ReadVariable(VirtAddVarTab[EE_PID_PIT_P],&_temp);
  110.         PID_PIT.P = (float)_temp / 100;
  111.         EE_ReadVariable(VirtAddVarTab[EE_PID_PIT_I],&_temp);
  112.         PID_PIT.I = (float)_temp / 1000;
  113.         EE_ReadVariable(VirtAddVarTab[EE_PID_PIT_D],&_temp);
  114.         PID_PIT.D = (float)_temp / 100;
  115.         EE_ReadVariable(VirtAddVarTab[EE_PID_YAW_P],&_temp);
  116.         PID_YAW.P = (float)_temp / 100;
  117.         EE_ReadVariable(VirtAddVarTab[EE_PID_YAW_I],&_temp);
  118.         PID_YAW.I = (float)_temp / 1000;
  119.         EE_ReadVariable(VirtAddVarTab[EE_PID_YAW_D],&_temp);
  120.         PID_YAW.D = (float)_temp / 100;
  121. }
復(fù)制代碼

ANO_TC匿名科創(chuàng)地面站V3.1.rar (4.44 MB, 下載次數(shù): 136)
飛控通信協(xié)議.zip (11.92 KB, 下載次數(shù): 67)

還有我收藏的匿名飛行器最經(jīng)典的PID,有很大的參考價(jià)值。
ANO-MR-F1-14422經(jīng)典pid.zip (415.29 KB, 下載次數(shù): 83)

作者: 傳說中的黑夜    時(shí)間: 2016-10-13 16:32
mark...
作者: wlq19911021a    時(shí)間: 2017-3-16 09:12
謝謝樓主啦啦,樓主好人啊
作者: wlq19911021a    時(shí)間: 2017-3-16 09:13
不錯(cuò)的東西,謝啦
作者: TP-dl    時(shí)間: 2017-3-20 13:17
為什么光扣分,就是下不了啊

作者: steve88    時(shí)間: 2017-3-20 13:43
51有你真精彩...
作者: aluckydragon    時(shí)間: 2018-6-12 17:19
撒開源呀,就是個(gè)程序
作者: 黃彪    時(shí)間: 2018-7-1 14:45
謝謝你的分享




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美精品日韩 | 九色91在线 | 婷婷色在线| 三级视频在线观看 | 日韩av网站在线观看 | 九九久久精品 | 日韩精品片 | 综合久久久 | 四虎在线免费观看 | av手机在线免费观看 | 懂色av一区二区三区 | 免费a在线观看 | 国产精品一区二区三区四区五区 | 成人av一区二区三区在线观看 | 国产免费黄色片 | 九色av | 一级片在线播放 | 成人午夜免费视频 | 国产乱码一区二区三区 | www.99精品| 色福利网 | 日韩视频在线免费观看 | 日韩精品免费视频 | 69福利视频 | 久草免费在线视频 | www.天天操| 国产在线资源 | 国产尤物视频 | 吃奶动态图 | 欧美另类激情 | 日韩毛片网 | 欧美一级欧美三级在线观看 | 欧美成人精品欧美一级乱黄 | 久久久噜噜噜 | xxxx色 | 国产精品一级 | 丰满少妇高潮在线观看 | 日韩欧美亚洲国产 | 伊人国产女| 欧美日韩中文字幕在线观看 | 永久免费看mv网站入口亚洲 |