本部分主要是关于磁力计进行校准操作的,用户手册上有详细步骤,有需要可以看看
#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 ma