单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1126|回复: 1
打印 上一主题 下一主题
收起左侧

HT-Hawk四轴飞行器地面站与stm32下位机测试程序下载 恒拓飞控资料

[复制链接]
跳转到指定楼层
楼主
恒拓飞控地面控制系统



【  请允许软件访问、操作注册表  】

1、15个独立通道的启用和关闭可通过单击通道对应的数码管来调整
2、双击通道对应的数码管来调整通道颜色
3、各通道颜色及开关状态均会在软件关闭时保存在电脑内
4、各项PID参数在重启软件后不会清空,保持关闭前的数据
5、RC通道最大最小值可设定
6、根据串口通讯状况及下位机字节发送速度来调整帧时间间隔,以确保上位机解析正确
7、可根据电脑配置情况来调整UI刷新率(fps),以防止软件占用过多系统资源及卡顿

单片机源程序如下:

  1. /*

  2.     上位机测试程序,
  3.                
  4.                 下位机循环发送各功能模块数据帧至上位机。

  5.    
  6.                 Hto_ES.C 为协议帧生成库函数
  7.    

  8. */



  9. #include <stm32f10x.h>
  10. #include <stdlib.h>
  11. #include "sys.h"
  12. #include "usart.h"               
  13. #include "delay.h"       
  14. #include "led.h"
  15. #include "lcd.h"          
  16. #include "adc.h"
  17. #include "dma.h"
  18. #include "Hto_ES.h"

  19.                                        
  20. float Tmp,test_1,test_2,test_3;

  21. int i,F,sw;

  22. int main(void)
  23. {                         
  24.   Stm32_Clock_Init(9);    //系统时钟设置
  25.         delay_init(72);                      //延时初始化
  26.        
  27.         uart_init(72,115200);     //串口1初始化

  28.         LCD_Init();                                //初始化液晶                  
  29.         LED_Init();             //LED初始化

  30.         POINT_COLOR=RED;        //设置字体为红色       
  31.        
  32.         BACK_COLOR = BLACK;
  33.        
  34.         LCD_Clear(BLACK);
  35.        
  36.         LCD_ShowString(80,0,200,16,16,"ACE-Tech");       

  37.   POINT_COLOR = WHITE;       
  38.        
  39.         sw = 0;
  40.        
  41.         test_1 = test_2 = test_3 = 0;
  42.        
  43.        
  44. //////////////////////////////////////////////////////////////////////       
  45.        

  46.         while(1)            
  47.         {        
  48.           Tmp = 1.0;

  49.                 Tmp += 0.184;
  50.                
  51.     CH1_data  = rand()%200;
  52.                 CH2_data  = rand()%200;  //15通道独立数据
  53.                 CH3_data  = rand()%200;
  54.                 CH4_data  = rand()%200;
  55.                 CH5_data  = rand()%200;
  56.                 CH6_data  = rand()%200;
  57.                 CH7_data  = rand()%200;
  58.                 CH8_data  = rand()%200;
  59.                 CH9_data  = rand()%200;
  60.                 CH10_data = rand()%200;
  61.                 CH11_data = rand()%200;
  62.                 CH12_data = rand()%200;
  63.                 CH13_data = rand()%200;
  64.                 CH14_data = rand()%200;
  65.                 CH15_data = rand()%200;

  66. //-------------------------------------------------------------------------------
  67.                
  68.                 Longitude_val = 11.234; //经度
  69.                 Latitude_Val  = 15.634; //纬度
  70.                 Altitude_Val  = 56.687; //高度
  71.                 Dir_Val       = 98.685; //方位角
  72.                 SPD_Val       = 12.568; //速度
  73.                
  74.                 Voltage_Val    = 11.25*100; //假定电池电压11.25v,放大100倍
  75.                 Temperture_Val = 25.67*100; //假定温度为25.67℃,放大100倍
  76.                 Satellite_Val  = 7;         //假定7颗可用卫星
  77.                
  78.                 Location_Sta = 1;   //假定定位ok
  79.                
  80.                 Longitude_WE = 'W';
  81.                 Latitude_NS  = 'N';

  82. //-------------------------------------------------------------------------------

  83.     Pitch_Val =  test_1;
  84.                 Roll_Val  =  test_2;    //测试姿态数据
  85.                 Yaw_Val   =  test_3;

  86.     test_1 += 0.078;
  87.                 test_2 += 0.088;
  88.                 test_3 += 0.098;
  89.                
  90.                 if ( test_1 >= 180 ) test_1 = -test_1;
  91.                 if ( test_2 >= 180 ) test_2 = -test_2;
  92.                 if ( test_3 >= 360 ) test_3 = 0;
  93.                
  94. //-------------------------------------------------------------------------------

  95.     Gyro_X =  0.065;
  96.                 Gyro_Y = -5.896;
  97.                 Gyro_Z =  0.102;
  98.                
  99.                 Accel_X =  0.008;
  100.                 Accel_Y = -0.003;  //传感器校准
  101.                 Accel_Z =  1.021;
  102.                
  103.                 Mag_X =  85.659;
  104.                 Mag_Y = 268.475;
  105.                 Mag_Z =   5.784;

  106. //-------------------------------------------------------------------------------
  107.                
  108.                 PoressBar_1 = 700;
  109.                 PoressBar_2 = 800;
  110.                 PoressBar_3 = 900;
  111.                 PoressBar_4 = 1000;
  112.                 PoressBar_5 = 1200;
  113.                 PoressBar_6 = 1400;  //RC 通道数据
  114.                 PoressBar_7 = 1600;
  115.                 PoressBar_8 = 1800;
  116.                 PoressBar_9 = 2000;
  117.                
  118. //-------------------------------------------------------------------------------               
  119.    
  120.                 Pitch_PID_P = -569;
  121.                 Pitch_PID_I = 48;
  122.                 Pitch_PID_D = 79;
  123.                
  124.                 Roll_PID_P = 89;
  125.                 Roll_PID_I = 21;
  126.                 Roll_PID_D = 34;
  127.                
  128.                 Yaw_PID_P = 14;
  129.                 Yaw_PID_I = 10589;
  130.                 Yaw_PID_D = 30549;
  131.                
  132.                 Alt_PID_P = -30468;
  133.                 Alt_PID_I = -26;
  134.                 Alt_PID_P = -1;
  135.                
  136.                 Pos_PID_P = 5684;
  137.                 Pos_PID_I = -2;
  138.                 Pos_PID_D = 568;
  139.                
  140. //////////////////////////////////////////////////////////////////////////////////
  141. //协议帧生成               
  142.                
  143.                 switch(sw) //循环发送各模块数据
  144.                 {
  145.                         case 1: F = HtoEs_Chart_Data_Generate();    break;  //测试独立通道,返回需发送字节数
  146.                         case 2: F = HtoEs_GPS_Data_Generate();      break;  //测试GPS,返回需发送字节数         
  147.       case 3: F = HtoEs_Attitude_Data_Generate(); break;  //测试姿态,返回需发送字节数       
  148.       case 4: F = HtoEs_RC_Data_Generate();       break;  //测试RC通道,返回需发送字节数       
  149.       case 5: F = HtoEs_PID_Data_Generate();      break;  //测试PID参数,返回需发送字节数                               
  150.       case 6: F = HtoEs_Senosrs_Data_Generate();  break;  //测试传感器标定,返回需发送字节数                                       
  151.                         case 7: sw = 0; break;
  152.                 }
  153.                
  154.                 sw++;

  155. //////////////////////////////////////////////////////////////////////////////////
  156. // 发送部分
  157.                
  158.           for( i = 0 ; i < F; i++)  //循环发送,直到发送完毕   
  159.                 {
  160.                   while((USART1->SR&0X40)==0);
  161.             USART1->DR = HtoEs_OutPut_Buffer[i];      
  162.                 }
  163.   
  164.      delay_ms(3);  //帧空闲时间
  165.                  
  166.                  LED1=!LED1;            
  167.   }
  168. }
复制代码

所有资料51hei提供下载:
HT-Hawk四轴飞行器地面站.rar (2.32 MB, 下载次数: 11)




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
春阴酿寒 发表于 2019-7-6 02:40 | 只看该作者
谢谢啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表