资源简介
匿名地面站6.5版本传输协议,第六版本可用,包括详细的C文件以及头文件,本人已经全部测试完毕可以使用,相关说明可以查阅本人博客或私聊,如果你下载以后使用出现问题,可私聊解决
代码片段和文件信息
#include “ANO_DT.h“
#include “mpu6050.h“
#include “flight_control.h“
#include “24l01.h“
#include “HCSR04.h“
#include “usart.h“
#include “stm32f10x_usart.h“
#include “kalman.h“
#include “stmflash.h“
#include “adc.h“
#include “debug_para.h“
/////////////////////////////////////////////////////////////////////////////////////
//数据拆分宏定义,在发送大于1字节的数据类型时,比如int16、float等,需要把数据拆分成单独字节进行发送
#define BYTE0(dwTemp) ( *( (char *)(&dwTemp) ) )
#define BYTE1(dwTemp) ( *( (char *)(&dwTemp) + 1) )
#define BYTE2(dwTemp) ( *( (char *)(&dwTemp) + 2) )
#define BYTE3(dwTemp) ( *( (char *)(&dwTemp) + 3) )
dt_flag_t f; //需要发送数据的标志
u8 data_to_send[50]; //发送数据缓存
extern float motor_duty[4];
extern struct PID_parameter PID_pitch ; //姿态角PID
extern struct PID_parameter PID_roll;
extern struct PID_parameter PID_yaw;
extern struct PID_parameter PID_gyro_x; //角速度PID
extern struct PID_parameter PID_gyro_y;
extern struct PID_parameter PID_gyro_z;
extern float accel[3];
extern struct PID_parameter PID_height; //高度PID
extern struct Kalman_data kalman_accel_x ; //三轴的加速度卡尔曼滤波数据(从左到右为last_p Q R output)
extern struct Kalman_data kalman_accel_y ;
extern struct Kalman_data kalman_accel_z ;
extern struct Attitude_int offset; //四旋翼静态的时候6050测得的数据
extern struct Attitude_float attitude; //四旋翼当前的姿态数据
extern float Power_V;
extern struct debug_data debug;
/////////////////////////////////////////////////////////////////////////////////////
//Data_Exchange函数处理各种数据发送请求,比如想实现每5ms发送一次传感器数据至上位机,即在此函数内实现
//此函数应由用户每1ms调用一次
void ANO_DT_Data_Exchange(void)
{
static u8 cnt = 0;
static u8 senser_cnt = 10;
static u8 status_cnt = 15;
static u8 motopwm_cnt = 20;
static u8 udata_cnt = 25;
static u8 power_cnt = 50; //计量值用来确定数据传输频率
if((cnt % senser_cnt) == (senser_cnt-1))
f.send_senser = 1;
if((cnt % status_cnt) == (status_cnt-1))
f.send_status = 1;
if((cnt % motopwm_cnt) == (motopwm_cnt-1))
f.send_motopwm = 1;
if((cnt % udata_cnt) == (udata_cnt-1))
f.udata =1;
if((cnt % power_cnt) == (power_cnt-1))
f.send_power = 1; //到达计数值,标志位置一
cnt++;
/////////////////////////////////////////////////////////////////////////////////////
if(f.send_status)//传输UAV当前状态、姿态角、高度
{
f.send_status = 0;
ANO_DT_Send_Status(attitude.roll attitude.pitch attitude.yaw attitude.height21);
}
/////////////////////////////////////////////////////////////////////////////////////
else if(f.send_senser)//传输传感器数据6050和磁力计等数据
{
f.send_senser = 0;
ANO_DT_Send_Senser(debug.temp_duty_Kd*100 debug.temp_duty_Kp*100 debug.angleattitude.gyro_xattitude.gyro_yattitude.gyro_zaccel[0]accel[1]accel[2]);
}
else if(f.udata)
{
f.udata=0;
ANO_DT_Send_Udata(000000000);
}
////////////////////////////////
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1344 2019-04-10 21:43 ANO_DT.h
文件 71262208 2018-11-21 00:04 ANO_TC匿名上位机V65_.exe
文件 15907 2019-04-10 22:48 ANO_DT.c
评论
共有 条评论