代码解读九 文件名“Ano_MagProcess.c”

本文档聚焦于磁力计的校准过程,详细解读了文件'Ano_MagProcess.c'的内容,该文件与匿名飞控系统的罗盘处理相关。用户手册中提供了完整的校准步骤,供有兴趣的读者查阅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本部分主要是关于磁力计进行校准操作的,用户手册上有详细步骤,有需要可以看看

#include "Ano_MagProcess.h"
#include "Drv_LED.h"


//本文件是关于磁力计校准及相关处理的,可以结合用户手册及灯光的变化进行磁力计校准等操作




static s16 max_t[VEC_XYZ];
static s16 min_t[VEC_XYZ];


_mag_cal_st mag;

//磁力计计算复位,算是初始值了
//mode -> 1/2/其他
static void Mag_Cal_Reset(u8 mode)
{
	if(mode == 2)
	{
		for(u8 i = 0;i<2;i++)
		{
			max_t[i] = 0;
			min_t[i] = 30000;

		}
	}
	else if(mode == 1)
	{
			max_t[Z] = 0;
			min_t[Z] = 30000;		
	}
	else
	{
		for(u8 i = 0;i<3;i++)
		{
			max_t[i] = 0;
			min_t[i] = 30000;

		}	
	}
}


//计算X/Y轴
//进行限幅
static void Mag_Cal_XY(s16 mag_in[])
{
	for(u8 i = 0;i<2;i++)
	{
		max_t[i] = _MAX(max_t[i],mag_in[i]);
		min_t[i] = _MIN(min_t[i],mag_in[i]);
	}
	
}


//计算Z轴
static void Mag_Cal_Z(s16 mag_in[])
{
	max_t[Z] = _MAX(max_t[Z],mag_in[Z]);
	min_t[Z] = _MIN(min_t[Z],mag_in[Z]);
}

static u8 mag_cal_step;


//磁力计数据处理函数
void Mag_Data_Deal_Task(u8 dT_ms,s16 mag_in[],float z_vec_z,float gyro_deg_x,float gyro_deg_z)
{	
	static u16 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值