feat: 新增激光定时关闭与姿态角持续输出测试功能,编码转UTF-8

1. 激光定时自动关闭:默认10分钟,laser on启动计时,超时自动关并上报
2. laser time <min>可配置定时分钟数,0=关闭定时
3. att on/off持续输出姿态角(Pitch/Roll/Yaw),不注册不低功耗
4. 20个源文件从GB2312编码转为UTF-8 with BOM
This commit is contained in:
2026-07-20 17:04:48 +08:00
parent 70758b1c06
commit 72844ff821
20 changed files with 1388 additions and 1260 deletions
+27 -27
View File
@@ -1,23 +1,23 @@
/************************************************************************************************
* 程序版本:V3.0
* 程序日期:2022-11-3
* 程序作者:
/************************************************************************************************
* 程序版本:V3.0
* 程序日期:2022-11-3
* 程序作者:
************************************************************************************************/
#include "Imu.h"
#include "main.h"
#define Kp_New 0.9f //互补滤波当前数据的权重
#define Kp_Old 0.1f //互补滤波历史数据的权重
#define Acc_Gain 0.0001220f //加速度变成G (初始化加速度满量程-+4g LSBa = 2*4/65535.0)
#define Gyro_Gain 0.0609756f //角速度变成度 (初始化陀螺仪满量程+-2000 LSBg = 2*2000/65535.0)
#define Gyro_Gr 0.0010641f //角速度变成弧度(3.1415/180 * LSBg)
#define Kp_New 0.9f //互补滤波当前数据的权重
#define Kp_Old 0.1f //互补滤波历史数据的权重
#define Acc_Gain 0.0001220f //加速度变成G (初始化加速度满量程-+4g LSBa = 2*4/65535.0)
#define Gyro_Gain 0.0609756f //角速度变成度 (初始化陀螺仪满量程+-2000 LSBg = 2*2000/65535.0)
#define Gyro_Gr 0.0010641f //角速度变成弧度(3.1415/180 * LSBg)
//kp=ki=0 就是完全相信陀螺仪
//kp=ki=0 就是完全相信陀螺仪
#define Kp 1.5f // proportional gain governs rate of convergence to accelerometer/magnetometer
//比例增益控制加速度计,磁力计的收敛速率
//比例增益控制加速度计,磁力计的收敛速率
#define Ki 0.005f // integral gain governs rate of convergence of gyroscope biases
//积分增益控制陀螺偏差的收敛速度
#define halfT 0.005f // half the sample period 采样周期的一半
//积分增益控制陀螺偏差的收敛速度
#define halfT 0.005f // half the sample period 采样周期的一半
static volatile float q0 = 1, q1 = 0, q2 = 0, q3 = 0; // quaternion elements representing the estimated orientation
static volatile float exInt = 0, eyInt = 0, ezInt = 0; // scaled integral error
@@ -29,7 +29,7 @@ static float MedianValue(float *value_buf, unsigned int size)
unsigned int i,j;
float temp;
//排序采用冒泡法
//排序采用冒泡法
for (j=0;j<=size;j++){
for (i=0;i<=size-j;i++){
if (value_buf[i] > value_buf[i+1]){
@@ -194,48 +194,48 @@ static void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az
if(ax*ay*az==0)
return;
//加速度计<测量>的重力加速度向量(机体坐标系)
//加速度计<测量>的重力加速度向量(机体坐标系)
norm = invSqrt(ax*ax + ay*ay + az*az);
ax = ax * norm;
ay = ay * norm;
az = az * norm;
// printf("ax=%0.2f ay=%0.2f az=%0.2f\r\n",ax,ay,az);
//陀螺仪积分<估计>重力向量(机体坐标系)
vx = 2*(q1q3 - q0q2); //矩阵(3,1)项
vy = 2*(q0q1 + q2q3); //矩阵(3,2)项
vz = q0q0 - q1q1 - q2q2 + q3q3 ; //矩阵(3,3)项
//陀螺仪积分<估计>重力向量(机体坐标系)
vx = 2*(q1q3 - q0q2); //矩阵(3,1)项
vy = 2*(q0q1 + q2q3); //矩阵(3,2)项
vz = q0q0 - q1q1 - q2q2 + q3q3 ; //矩阵(3,3)项
//向量叉乘所得的值
//向量叉乘所得的值
ex = (ay*vz - az*vy);
ey = (az*vx - ax*vz);
ez = (ax*vy - ay*vx);
//用上面求出误差进行积分
//用上面求出误差进行积分
exInt = exInt + ex * Ki;
eyInt = eyInt + ey * Ki;
ezInt = ezInt + ez * Ki;
//将误差PI后补偿到陀螺仪
//将误差PI后补偿到陀螺仪
gx = gx + Kp*ex + exInt;
gy = gy + Kp*ey + eyInt;
gz = gz + Kp*ez + ezInt;//这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减
gz = gz + Kp*ez + ezInt;//这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减
//四元素的微分方程
//四元素的微分方程
q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;
q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;
q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;
q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;
//单位化四元数
//单位化四元数
norm = invSqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);
q0 = q0 * norm;
q1 = q1 * norm;
q2 = q2 * norm;
q3 = q3 * norm;
// 矩阵表达式
// 矩阵表达式
// matrix[0] = q0q0 + q1q1 - q2q2 - q3q3; // 11
// matrix[1] = 2.f * (q1q2 + q0q3); // 12
// matrix[2] = 2.f * (q1q3 - q0q2); // 13
@@ -246,7 +246,7 @@ static void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az
// matrix[7] = 2.f * (q2q3 - q0q1); // 32
// matrix[8] = q0q0 - q1q1 - q2q2 + q3q3; // 33
//下一步是四元数转换成欧拉角(Z->Y->X)
//下一步是四元数转换成欧拉角(Z->Y->X)
}
+6 -6
View File
@@ -1,17 +1,17 @@
#ifndef _IMU_H_
#ifndef _IMU_H_
#define _IMU_H_
#include <math.h>
#define PI 3.14159265358979323846f
#define RAD_TO_DEG 57.2957795 // 弧度到度的转换系数
#define DEG_TO_RAD 0.0174533 // 度到弧度的转换系数
#define RAD_TO_DEG 57.2957795 // 弧度到度的转换系数
#define DEG_TO_RAD 0.0174533 // 度到弧度的转换系数
// 定义欧拉角结构体
// 定义欧拉角结构体
typedef struct {
volatile float roll, pitch, yaw;//弧度
volatile float roll, pitch, yaw;//弧度
}Rad_T, *RadDp;
typedef struct {
volatile float roll, pitch, yaw;//角度
volatile float roll, pitch, yaw;//角度
}Deg_T, *DegDp;
#define Imu_AccFilterSize 10
+8 -8
View File
@@ -1,4 +1,4 @@
#include "sx127x.h"
#include "sx127x.h"
#include "ddl.h"
#include "UartDebug.h"
@@ -271,7 +271,7 @@ void Sx1276LoRaEnterRx(void)
uint8_t temp;
SX1276Read(REG_LR_IRQFLAGS, &temp);
//设置接收模式
//设置接收模式
LORA_ANTRXEN();
}
@@ -314,17 +314,17 @@ void Sx1276LoRaInit(void (*RxCallBack)(uint8_t *rBuff, uint8_t rlen))
//SpreadingFactor
if( LoRaPara.SpreadFactor == SX1276_SF_64){
SX1276LoRaSetNbTrigPeaks(5);
SX1276LoRaSetLowDatarateOptimize(TRUE); //低数据速率设置
SX1276LoRaSetLowDatarateOptimize(TRUE); //低数据速率设置
}
else{
SX1276LoRaSetNbTrigPeaks(3);
SX1276LoRaSetLowDatarateOptimize(FALSE); //低数据速率设置
SX1276LoRaSetLowDatarateOptimize(FALSE); //低数据速率设置
}
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_SF_MASK ) | LoRaPara.SpreadFactor;
//PacketCrcOn
LoRaPara.RegBuff.RegModemConfig2 = (LoRaPara.RegBuff.RegModemConfig2 & RFLR_MODEMCONFIG2_RXPAYLOADCRC_MASK ) | SX1276_CRC_ON; //SX1276_CRC_OFF
//验证寄存器操作是否成功
//验证寄存器操作是否成功
SX1276Write(REG_LR_MODEMCONFIG2, LoRaPara.RegBuff.RegModemConfig2);
uint8_t Config2 = 0;
SX1276Read(REG_LR_MODEMCONFIG2, &Config2);
@@ -425,7 +425,7 @@ void Sx1276LoRaLoopHandler(void)
void Sx1276LoRaSendBuffer(uint8_t* pucBuff, uint8_t ucLen)
{
//设置发送模式
//设置发送模式
LORA_ANTTXEN();
LoRaPara.State = SX1276_BUSY;
@@ -473,8 +473,8 @@ void Sx1276LoRaWakeup(void)
}
////////////////////////////////////////
//配置本层参数的函数
//频道表
//配置本层参数的函数
//频道表
const uint32_t gdwSx1276ChannelTbl[SX1276_CHANNEL_MAX]={
FREQ_CENT-FREQ_DEV*8, FREQ_CENT-FREQ_DEV*7, FREQ_CENT-FREQ_DEV*6, FREQ_CENT-FREQ_DEV*5,
FREQ_CENT-FREQ_DEV*4, FREQ_CENT-FREQ_DEV*3, FREQ_CENT-FREQ_DEV*2, FREQ_CENT-FREQ_DEV*1,
+209 -116
View File
@@ -1,4 +1,4 @@
#include <string.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -62,24 +62,24 @@ void vcom_Send( char *format, ... )
void vcom_Print(uint8_t sLen)
{
// 定义一个字符指针CurChar
// 定义一个字符指针CurChar
char* CurChar;
// 初始化ir
// 初始化ir
ir = 0;
// 当ir小于sLen时,循环执行
// 当ir小于sLen时,循环执行
while(ir < sLen)
{
// 获取字符指针CurChar
// 获取字符指针CurChar
CurChar = &buff[ir++];
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
// 调用DebugUartSend函数,发送CurChar指向的字符,次数为1
DBGUartSend((uint8_t*)CurChar, 1);
}
}
// 定义一个函数vcom_Send2,用于发送字符串
// 定义一个函数vcom_Send2,用于发送字符串
void vcom_Send2(uint8_t *sData, uint16_t len)
{
// 遍历sData,将每个元素发送到DebugUartSend
// 遍历sData,将每个元素发送到DebugUartSend
for(int i = 0; i < len; i++) {
DBGUartSendByte(sData[i]);
}
@@ -94,7 +94,7 @@ void DebugLoopHandler(void)
return;
//for(argv[argc] = strtok(RxBuff, " '\r'"); argv[argc] != NULL; argv[++argc] = strtok(NULL, " '\r'"));
// 解析字符串,将参数放入argv数组中
// 解析字符串,将参数放入argv数组中
argp = strtok(RxBuff, " ");
for(int i = 0; i < 10; i++) {
if(argp != NULL) {
@@ -107,19 +107,19 @@ void DebugLoopHandler(void)
}
}
// 获取第一个参数,并将其赋值给argp
// 获取第一个参数,并将其赋值给argp
argp = strtok(argv[argc], "'\r'");
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
// 如果argp不为空,则将argp的值赋值给argv[argc],并将argc加1
if(argp != NULL) {
argv[argc++] = argp;
}
// 否则,将RxLen设置为0,并返回
// 否则,将RxLen设置为0,并返回
else {
RxLen = 0;
return;
}
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
// 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数
for(int i = 0; i < DEBUG_CMD_CNT; i++) {
if(strcmp(argv[0], DebugFun[i].DBGCmd) == 0)
DebugFun[i].DBGExec(argc, argv);
@@ -129,45 +129,45 @@ void DebugLoopHandler(void)
RxLen = 0;
}
// 函数:Debug1mSRoutine
// 功能:1ms调试时钟routine
// 函数:Debug1mSRoutine
// 功能:1ms调试时钟routine
void Debug1mSRoutine(void)
{
// 如果1ms调试时钟计数器大于0
// 如果1ms调试时钟计数器大于0
if(RxRevTimeOutCnt > 0)
// 1ms调试时钟计数器减1
// 1ms调试时钟计数器减1
RxRevTimeOutCnt--;
}
// 定义函数DebugUartIRQ,用于处理串口接收中断
// 定义函数DebugUartIRQ,用于处理串口接收中断
void DebugUartIRQ(uint8_t Data)
{
// 如果1分钟超时计数器为0,则清空RxLen
// 如果1分钟超时计数器为0,则清空RxLen
if(RxRevTimeOutCnt == 0)
RxLen = 0;
// 重置1分钟超时计数器
// 重置1分钟超时计数器
RxRevTimeOutCnt = 3;
// 如果RxLen小于128,则将数据添加到RxBuff中
// 如果RxLen小于128,则将数据添加到RxBuff中
if(RxLen < 128) {
RxBuff[RxLen++] = Data;
}
// DBG_LOG("RxBuff = %s\n", RxBuff);
// RS485_Flag=1;//接收标志为置1
// RS485_Flag=1;//接收标志为置1
}
extern uint8_t LocalMAC[6]; //本机MAC地址
extern uint8_t GatewayMAC[6]; //网关MAC地址,注册时全为0
extern uint8_t LocalMAC[6]; //本机MAC地址
extern uint8_t GatewayMAC[6]; //网关MAC地址,注册时全为0
extern uint32_t LocalType;
extern uint32_t CommWay;
extern uint32_t DeviceSign;
extern uint32_t AddNumber;
/*****************************************************************************************
* 函数名称: DebugCmdGetPara
* 功能描述: 查看参数
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdGetPara
* 功能描述: 查看参数
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdGetPara(int argc, char *argv[])
{
@@ -226,11 +226,11 @@ static void DebugCmdGetPara(int argc, char *argv[])
DBG_LOG("**********************************************************\r\n");
}
/*****************************************************************************************
* 函数名称: DebugCmdMainOnOff
* 功能描述: 主调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdMainOnOff
* 功能描述: 主调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdMainOnOff(int argc, char *argv[])
{
@@ -253,11 +253,11 @@ static void DebugCmdMainOnOff(int argc, char *argv[])
}
}
/*****************************************************************************************
* 函数名称: DebugCmdDataOnOff
* 功能描述: 数据调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdDataOnOff
* 功能描述: 数据调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdDataOnOff(int argc, char *argv[])
{
@@ -280,11 +280,11 @@ static void DebugCmdDataOnOff(int argc, char *argv[])
}
}
/*****************************************************************************************
* 函数名称: DebugCmdSetMac
* 功能描述: 设置MAC地址
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdSetMac
* 功能描述: 设置MAC地址
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdSetMac(int argc, char *argv[])
{
@@ -317,11 +317,11 @@ static void DebugCmdSetMac(int argc, char *argv[])
DBG_LOG("Set gateway mac Address completed.\r\n");
}
/*****************************************************************************************
* 函数名称: DebugCmdDevReg
* 功能描述: 设备申请注册
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdDevReg
* 功能描述: 设备申请注册
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdDevReg(int argc, char *argv[])
{
@@ -340,11 +340,11 @@ static void DebugCmdDevReg(int argc, char *argv[])
App.LoginFlag = true;
}
/*****************************************************************************************
* 函数名称: DebugCmdDataUpload
* 功能描述: 设备数据上传
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdDataUpload
* 功能描述: 设备数据上传
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdDataUpload(int argc, char *argv[])
{
@@ -372,11 +372,11 @@ static void DebugCmdDataUpload(int argc, char *argv[])
App.UploadFlag = true;
}
/*****************************************************************************************
* 函数名称: DebugCmdDataColl
* 功能描述: 设备数据采集
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdDataColl
* 功能描述: 设备数据采集
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdDataColl(int argc, char *argv[])
{
@@ -394,11 +394,11 @@ static void DebugCmdDataColl(int argc, char *argv[])
SGCP.TimingAcquisition = true;
}
/*****************************************************************************************
* 函数名称: DebugCmdCat1OnOff
* 功能描述: CAT1调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdCat1OnOff
* 功能描述: CAT1调试信息开关
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
void DebugCmdRS485Ctrl(int argc, char *argv[])
{
@@ -541,11 +541,11 @@ void DebugCmdRS485Ctrl(int argc, char *argv[])
SAVE_APP_PARA((uint32_t *)&App.Para);
}
/*****************************************************************************************
* 函数名称: DebugLoraConfig
* 功能描述: Lora参数配置
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugLoraConfig
* 功能描述: Lora参数配置
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugLoraConfig(int argc, char *argv[])
{
@@ -675,19 +675,19 @@ static void DebugLoraConfig(int argc, char *argv[])
DBG_LOG("Lora reinitializes.\r\n");
}
/*****************************************************************************************
* 函数名称: DebugCmdLPConfig
* 功能描述: 低功耗参数配置
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdLPConfig
* 功能描述: 低功耗参数配置
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdLPConfig(int argc, char *argv[])
{
DBG_LOG("\r\n");
uint16_t CollectInterval; //采集时间间隔
uint16_t ReportInterval; //上报时间间隔
uint8_t ERInterval; //紧急上报时间间隔
uint8_t ERTime; //紧急上报时长
uint16_t CollectInterval; //采集时间间隔
uint16_t ReportInterval; //上报时间间隔
uint8_t ERInterval; //紧急上报时间间隔
uint8_t ERTime; //紧急上报时长
if(strcmp(argv[1], "?") == 0) {
DBG_LOG("Debug Cmd: lpcfg arg1 arg2 arg3 arg4\r\n");
@@ -737,11 +737,11 @@ static void DebugCmdLPConfig(int argc, char *argv[])
DBG_LOG("The low-power device is configured.\r\n");
}
/*****************************************************************************************
* 函数名称: DebugLaserConfig
* 功能描述: 激光控制
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugLaserConfig
* 功能描述: 激光控制
* 参 数: argc, 输入参数数量
* argv, 参数列表
* 返 回 值: 无
*****************************************************************************************/
static void DebugLaserConfig(int argc, char *argv[])
{
@@ -751,32 +751,52 @@ static void DebugLaserConfig(int argc, char *argv[])
if(strcmp(argv[1], "?") == 0) {
DBG_LOG("Debug Cmd: laser arg1\r\n");
DBG_LOG(" brief --> Control laser on or off.\r\n");
DBG_LOG(" arg1 --> on/off\r\n\r\n");
DBG_LOG(" brief --> Control laser on/off, set auto-off timer.\r\n");
DBG_LOG(" arg1 --> on/off/time\r\n");
DBG_LOG(" laser on Turn on laser, start timer.\r\n");
DBG_LOG(" laser off Turn off laser.\r\n");
DBG_LOG(" laser time <min> Set auto-off timer (0=disable, default 10).\r\n\r\n");
return;
}
if(strcmp(argv[1], "on") == 0) {
DBG_LOG("The laser has been activated.\r\n");
SGCP.LaserOnOff = true;
SGCP.LaserTimerCount = SGCP.LaserTimerMinutes * 2;
SGCP.GWStatus = GW_STATUS_LASER_STARES;
}
else if(strcmp(argv[1], "off") == 0) {
DBG_LOG("The laser has been turned off.\r\n");
SGCP.LaserOnOff = false;
SGCP.LaserTimerCount = 0;
SGCP.GWStatus = GW_STATUS_LASER_STARES;
}
else if(strcmp(argv[1], "time") == 0)
{
if(argc < 3)
{
DBG_LOG("Laser timer is set to %d minute(s).\r\n", SGCP.LaserTimerMinutes);
return;
}
int min = atoi(argv[2]);
if(min < 0 || min > 255)
{
DBG_LOG("Invalid minutes! Range: 0~255.\r\n");
return;
}
SGCP.LaserTimerMinutes = (uint8_t)min;
DBG_LOG("Laser timer set to %d minute(s).\r\n", SGCP.LaserTimerMinutes);
}
}
/*****************************************************************************************
* 函数名称: DebugCmdRestoreFactory
* 功能描述: 恢复出厂设置
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
* Function: DebugCmdRestoreFactory
* Description: 恢复出厂设置
* Input: argc, 参数个数
* argv, 参数列表
* Output: 无
*****************************************************************************************/
void DebugCmdRestoreFactory(int argc, char *argv[])
{
DBG_LOG("\r\n");
if(strcmp(argv[1], "?") == 0) {
DBG_LOG("Debug Cmd: res arg1\r\n\
brief --> Restore to factory.\r\n");
@@ -797,11 +817,11 @@ void DebugCmdRestoreFactory(int argc, char *argv[])
while(1);
}
/*****************************************************************************************
* 函数名称: DebugCmdReboot
* 功能描述: 设备重启
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
* 函数名称: DebugCmdReboot
* 功能描述: 设备重启
* 参 数: argc, 输入参数数量
argv, 输入参数
* 返 回 值: 无
*****************************************************************************************/
static void DebugCmdChannel(int argc, char *argv[])
{
@@ -841,12 +861,43 @@ static void DebugCmdReboot(int argc, char *argv[])
}
/*****************************************************************************************
* Function: DebugCmdAtt
* Description: 姿态角持续输出
* Input: argc, 参数个数
argv, 参数列表
* Output: 无
*****************************************************************************************/
static void DebugCmdAtt(int argc, char *argv[])
{
DBG_LOG("\r\n");
if(argc < 2 || strcmp(argv[1], "?") == 0)
{
DBG_LOG("Debug Cmd: att\r\n");
DBG_LOG(" brief --> Continuous attitude angle output.\r\n");
DBG_LOG(" arg1 --> on/off\r\n\r\n");
return;
}
if(strcmp(argv[1], "on") == 0)
{
App.AttTestMode = true;
App.AttTestCnt = 1000;
DBG_LOG("Attitude debug output ON.\r\n");
}
else if(strcmp(argv[1], "off") == 0)
{
App.AttTestMode = false;
DBG_LOG("Attitude debug output OFF.\r\n");
}
}
/*****************************************************************************************
* Function: DebugCmdSignal
* Description: 信号质量查询
* Input: argc, 参数个数
argv, 参数列表
* Output: 无
* Description: 信号质量查询
* Input: argc, 参数个数
argv, 参数列表
* Output: 无
*****************************************************************************************/
static void DebugCmdSignal(int argc, char *argv[])
{
@@ -866,19 +917,51 @@ static void DebugCmdSignal(int argc, char *argv[])
}
SGCP.GWStatus = GW_STATUS_SIGNAL;
}
/*****************************************************************************************
* Function: DebugCmdAttTest
* Description: 姿态角测试输出
* Input: argc, 参数个数
* argv, 参数列表
* Output: 无
*****************************************************************************************/
static void DebugCmdAttTest(int argc, char *argv[])
{
DBG_LOG("\r\n");
if(argc < 2)
{
DBG_LOG("Debug Cmd: att on/off\r\n");
DBG_LOG(" att on --> Start attitude test output.\r\n");
DBG_LOG(" att off --> Stop attitude test output.\r\n\r\n");
return;
}
if(strcmp(argv[1], "on") == 0) {
App.AttTestMode = true;
App.AttTestCnt = 1000;
DBG_LOG("Attitude test started.\r\n");
}
else if(strcmp(argv[1], "off") == 0) {
App.AttTestMode = false;
DBG_LOG("Attitude test stopped.\r\n");
}
else {
DBG_LOG("Usage: att on/off\r\n");
}
}
void DebugCmdHelp(int argc, char *argv[])
{
DBG_LOG("\r\n");
char Data[10];
uint8_t len = 0;
char *argv1[10]; // 最多10个参数,按需调整
char *argv1[10]; // 最多10个参数,按需调整
int argc1 = 0;
char *token;
memset(Data, 0x00, 10);
len = strlen("para ?\0");
memcpy(Data, "para ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -888,7 +971,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("main ?\0");
memcpy(Data, "main ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -898,7 +981,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("data ?\0");
memcpy(Data, "data ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -908,7 +991,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("mac ?\0");
memcpy(Data, "mac ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -918,7 +1001,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("reg ?\0");
memcpy(Data, "reg ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -928,7 +1011,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("up ?\0");
memcpy(Data, "up ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -938,7 +1021,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("coll ?\0");
memcpy(Data, "coll ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -948,7 +1031,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("rs485 ?\0");
memcpy(Data, "rs485 ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++){
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -958,7 +1041,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("lora ?\0");
memcpy(Data, "lora ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -968,7 +1051,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("lpcfg ?\0");
memcpy(Data, "lpcfg ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -978,7 +1061,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("laser ?\0");
memcpy(Data, "laser ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -988,7 +1071,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("res ?\0");
memcpy(Data, "res ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -1008,7 +1091,7 @@ void DebugCmdHelp(int argc, char *argv[])
memset(Data, 0x00, 10);
len = strlen("reboot ?\0");
memcpy(Data, "reboot ?\0", len);
token = strtok(Data, " "); // 假设分隔符是空格
token = strtok(Data, " "); // 假设分隔符是空格
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
@@ -1023,7 +1106,16 @@ void DebugCmdHelp(int argc, char *argv[])
argv1[argc1] = token;
token = strtok(NULL, " ");
}
DebugCmdSignal(argc1, argv1);
memset(Data, 0x00, 10);
len = strlen("att ?\0");
memcpy(Data, "att ?\0", len);
token = strtok(Data, " ");
for(argc1 = 0; (token != NULL && argc1 < 10); argc1++) {
argv1[argc1] = token;
token = strtok(NULL, " ");
}
DebugCmdAtt(argc1, argv1);
}
const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
@@ -1042,6 +1134,7 @@ const DBGFunType DebugFun[DEBUG_CMD_CNT] = {
"res", DebugCmdRestoreFactory,
"dch", DebugCmdChannel,
"reboot", DebugCmdReboot,
"att", DebugCmdAtt,
"sig", DebugCmdSignal,
};
#endif
+3 -3
View File
@@ -1,4 +1,4 @@
#ifndef __DEBUG_H
#ifndef __DEBUG_H
#define __DEBUG_H
#include "bsp.h"
@@ -13,7 +13,7 @@
void vcom_Send( char *format, ... );
void vcom_Send2(uint8_t *sData, uint16_t len);
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
#define DBG_LOG2(x, y) vcom_Send2(x, y) //打印长度超过缓存DEBUG_BUFF_SIZE_MAX的信息
#define DBG_LOG(...) vcom_Send(__VA_ARGS__)
#define DBG_LOG_F(fmt,arg...) LOG("[%s] "fmt,__FUNCTION__,##arg)
@@ -27,7 +27,7 @@ void vcom_Send2(uint8_t *sData, uint16_t len);
}
typedef enum {
DBG_CH_UART0 = 0, //默认串口调试方式 Uart0Init
DBG_CH_UART0 = 0, //默认串口调试方式 Uart0Init
DBG_CH_RS485_1, //RS485_1 (LPUART0)
}DebugChannel_e;
+16 -16
View File
@@ -1,4 +1,4 @@
/* Includes ------------------------------------------------------------------*/
#include "lsm6dsl_app.h"
#include "lsm6dsl_reg.h"
@@ -15,7 +15,7 @@ static bool InitFlag;
#define ACC_CVTTIME (20 * 1000)
#define ACC_COLL_CNT_MAX 6
#define ACC_FIFO_WATERMASK (ACC_COLL_CNT_MAX * 6) //采集一秒数据
#define ACC_FIFO_WATERMASK (ACC_COLL_CNT_MAX * 6) //采集一秒数据
#define TX_BUF_DIM 1000
#define BOOT_TIME 15 //ms
@@ -93,7 +93,7 @@ static void Lsm6dsl_Init(void)
/* Set Output Data Rate */
lsm6dsl_xl_data_rate_set(&dev_ctx, LSM6DSL_XL_ODR_12Hz5);
lsm6dsl_gy_data_rate_set(&dev_ctx, LSM6DSL_GY_ODR_12Hz5);
//lsm6dsl_gy_data_rate_set(&left_dev_ctx, LSM6DSL_GY_ODR_OFF); //关闭地磁
//lsm6dsl_gy_data_rate_set(&left_dev_ctx, LSM6DSL_GY_ODR_OFF); //关闭地磁
/* Set full scale */
lsm6dsl_xl_full_scale_set(&dev_ctx, LSM6DSL_2g);
lsm6dsl_gy_full_scale_set(&dev_ctx, LSM6DSL_2000dps);
@@ -110,26 +110,26 @@ static void Lsm6dsl_Init(void)
/* Gyroscope - filtering chain */
lsm6dsl_gy_band_pass_set(&dev_ctx, LSM6DSL_HP_260mHz_LP1_STRONG);
//fifo模式设置
lsm6dsl_fifo_xl_batch_set(&dev_ctx, LSM6DSL_FIFO_XL_NO_DEC);//fifo加速度写入频率设置
lsm6dsl_fifo_gy_batch_set(&dev_ctx, LSM6DSL_FIFO_GY_NO_DEC);//fifo陀螺仪写入频率设置
lsm6dsl_fifo_data_rate_set(&dev_ctx, LSM6DSL_FIFO_12Hz5);//FIFO ODR选择
//fifo模式设置
lsm6dsl_fifo_xl_batch_set(&dev_ctx, LSM6DSL_FIFO_XL_NO_DEC);//fifo加速度写入频率设置
lsm6dsl_fifo_gy_batch_set(&dev_ctx, LSM6DSL_FIFO_GY_NO_DEC);//fifo陀螺仪写入频率设置
lsm6dsl_fifo_data_rate_set(&dev_ctx, LSM6DSL_FIFO_12Hz5);//FIFO ODR选择
//中断1设置,watermark full中断
//中断1设置,watermark full中断
lsm6dsl_int1_route_t int1val ={0, 0, 0};
int1val.int1_full_flag = 1; //开阀值中断,fifo存储到缓存深度时触发
int1val.int1_full_flag = 1; //开阀值中断,fifo存储到缓存深度时触发
lsm6dsl_pin_int1_route_set(&dev_ctx, int1val);
lsm6dsl_fifo_watermark_set(&dev_ctx, ACC_FIFO_WATERMASK);//FIFO水印电平设置,阈值设置,缓存深度
lsm6dsl_fifo_stop_on_wtm_set(&dev_ctx, 1);//fifo缓存深度存满时,不再存储
//lsm6dsl_fifo_xl_gy_8bit_format_set(&left_dev_ctx, 1);//在FIFO中为XL和陀螺启用MSByte记忆,缓存宽度
lsm6dsl_block_data_update_set(&dev_ctx, 1); //fifo模式ctrl3_c bdu必须为1,直到读取MSB和LSB后才更新输出寄存器
lsm6dsl_auto_increment_set(&dev_ctx, 1); //fifo模式ctrl3_c if_inc必须为1,通过串行接口(I2C或SPI)进行多字节访问时自动增加寄存器地址。
lsm6dsl_fifo_watermark_set(&dev_ctx, ACC_FIFO_WATERMASK);//FIFO水印电平设置,阈值设置,缓存深度
lsm6dsl_fifo_stop_on_wtm_set(&dev_ctx, 1);//fifo缓存深度存满时,不再存储
//lsm6dsl_fifo_xl_gy_8bit_format_set(&left_dev_ctx, 1);//在FIFO中为XL和陀螺启用MSByte记忆,缓存宽度
lsm6dsl_block_data_update_set(&dev_ctx, 1); //fifo模式ctrl3_c bdu必须为1,直到读取MSB和LSB后才更新输出寄存器
lsm6dsl_auto_increment_set(&dev_ctx, 1); //fifo模式ctrl3_c if_inc必须为1,通过串行接口(I2C或SPI)进行多字节访问时自动增加寄存器地址。
lsm6dsl_ctrl3_c_t ctrl3_c;
platform_read(LSM6DSL_CTRL3_C, (uint8_t *)&ctrl3_c, 1);
//lsm6dsl_fifo_mode_set(&dev_ctx, LSM6DSL_FIFO_MODE);
//中断2设置,唤醒中断
// uint8_t temp = 0x90; //唤醒中断
//中断2设置,唤醒中断
// uint8_t temp = 0x90; //唤醒中断
// platform_write(LSM6DSL_TAP_CFG, &temp, 1);
// temp = 0;
// platform_write(LSM6DSL_WAKE_UP_DUR, &temp, 1);
+70 -70
View File
@@ -1,4 +1,4 @@
#include "main.h"
#include "main.h"
#include "mmc5983.h"
#include "UartDebug.h"
#include "i2c.h"
@@ -11,11 +11,11 @@ static bool MMC5983IntFlag;
static MMC5983Var_t MMC5983Var;
/*****************************************************************************************
* 函数名称: MMC5983_Write_Reg
* 功能描述: MMC5983写寄存器
* 参 数: reg 寄存器地址
val 寄存器数据
* 返 回 值: 成功返回true,失败返回false
* 函数名称: MMC5983_Write_Reg
* 功能描述: MMC5983写寄存器
* 参 数: reg 寄存器地址
val 寄存器数据
* 返 回 值: 成功返回true,失败返回false
*****************************************************************************************/
static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
{
@@ -23,10 +23,10 @@ static bool MMC5983_Write_Reg(uint8_t reg, uint8_t val)
}
/*****************************************************************************************
* 函数名称: MMC5983_Read_Reg
* 功能描述: MMC5983读寄存器
* 参 数: reg 寄存器地址
* 返 回 值: 返回寄存器值
* 函数名称: MMC5983_Read_Reg
* 功能描述: MMC5983读寄存器
* 参 数: reg 寄存器地址
* 返 回 值: 返回寄存器值
*****************************************************************************************/
static uint8_t MMC5983_Read_Reg(uint8_t reg)
{
@@ -37,12 +37,12 @@ static uint8_t MMC5983_Read_Reg(uint8_t reg)
}
/*****************************************************************************************
* 函数名称: MMC5983_Read_Buffer
* 功能描述: MMC5983读数据
* 参 数: reg 寄存器地址
buffer 读取数据输出缓存入口
len 读取长度
* 返 回 值: 成功返回true,失败返回false
* 函数名称: MMC5983_Read_Buffer
* 功能描述: MMC5983读数据
* 参 数: reg 寄存器地址
buffer 读取数据输出缓存入口
len 读取长度
* 返 回 值: 成功返回true,失败返回false
*****************************************************************************************/
static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
{
@@ -50,27 +50,27 @@ static bool MMC5983_Read_Buffer(uint8_t reg, void *buffer, uint8_t len)
}
/*****************************************************************************************
* 函数名称: MMC5983StartCov
* 功能描述: MMC5983开启连续转换
* 参 数: 无
* 返 回 值: 无
* 函数名称: MMC5983StartCov
* 功能描述: MMC5983开启连续转换
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
static void MMC5983StartCov(void)
{
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
Ctrl2Reg.Byte = 0x00;
Ctrl2Reg.Bit.Cm_freq = 0x04;
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
Ctrl2Reg.Bit.Cmm_en = 1; //连续设1,单次设0
Ctrl2Reg.Bit.Prd_set = 3;
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
Ctrl2Reg.Bit.En_prd_set = 1; //连续设1,单次设0
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
}
/*****************************************************************************************
* 函数名称: MMC5983_Init
* 功能描述: MMC5983初始化
* 参 数: 无
* 返 回 值: 无
* 函数名称: MMC5983_Init
* 功能描述: MMC5983初始化
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
static void MMC5983_Init(void)
{
@@ -93,12 +93,12 @@ static void MMC5983_Init(void)
MMC5983_Write_Reg(MMC5983_CTRL_1, Ctrl1Reg.Byte);
MMC5983Delay(15);
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
MMC5983RegCtrl2 Ctrl2Reg; //开启/关闭连续转换
Ctrl2Reg.Byte = 0x00;
Ctrl2Reg.Bit.Cm_freq = 0x04;
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
Ctrl2Reg.Bit.Cmm_en = 0; //连续设1,单次设0
Ctrl2Reg.Bit.Prd_set = 3;
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
Ctrl2Reg.Bit.En_prd_set = 0; //连续设1,单次设0
MMC5983_Write_Reg(MMC5983_CTRL_2, Ctrl2Reg.Byte);
MMC5983RegCtrl3 Ctrl3Reg;
@@ -121,12 +121,12 @@ static void MMC5983_Init(void)
}
/*****************************************************************************************
* 函数名称: MMC5983_Read
* 功能描述: MMC5983读取原始数据
* 参 数: MagAdcX X轴数据
MagAdcY Y轴数据
MagAdcZ Z轴数据
* 返 回 值: 成功返回true,失败返回false
* 函数名称: MMC5983_Read
* 功能描述: MMC5983读取原始数据
* 参 数: MagAdcX X轴数据
MagAdcY Y轴数据
MagAdcZ Z轴数据
* 返 回 值: 成功返回true,失败返回false
*****************************************************************************************/
static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
{
@@ -142,10 +142,10 @@ static bool MMC5983_Read(int32_t *MagAdcX, int32_t *MagAdcY, int32_t *MagAdcZ)
}
/*****************************************************************************************
* 函数名称: MMC5983_Get_Mag
* 功能描述: 外部获取MMC5983磁场强度数据
* 参 数: mag 读取数据输出缓存入口
* 返 回 值: 无
* 函数名称: MMC5983_Get_Mag
* 功能描述: 外部获取MMC5983磁场强度数据
* 参 数: mag 读取数据输出缓存入口
* 返 回 值: 无
*****************************************************************************************/
void MMC5983_Get_Mag(float *mag)
{
@@ -164,10 +164,10 @@ void MMC5983_Get_Mag(float *mag)
}
/*****************************************************************************************
* 函数名称: MMC5983LoopHandler
* 功能描述: MMC5983循环处理函数
* 参 数: 无
* 返 回 值: 无
* 函数名称: MMC5983LoopHandler
* 功能描述: MMC5983循环处理函数
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
extern void MmcDataProcessCallBack(float *Mag);
@@ -251,16 +251,16 @@ void MMC5983LoopHandler(void)
case MMC5983_STATUS_STOP:{
MMC5983Stop();
MMC5983Var.Status = MMC5983_STATUS_IDLE;
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
//MMC5983Var.Status = MMC5983_STATUS_START;//持续工作
break;}
}
}
/*****************************************************************************************
* 函数名称: LeftMMC59831mSRoutine
* 功能描述: MMC59831ms时基循环处理函数
* 参 数: 无
* 返 回 值: 无
* 函数名称: LeftMMC59831mSRoutine
* 功能描述: MMC59831ms时基循环处理函数
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC59831mSRoutine(void)
{
@@ -269,10 +269,10 @@ void MMC59831mSRoutine(void)
}
/*****************************************************************************************
* 函数名称: LeftMMC5983Init
* 功能描述: MMC5983初始化
* 参 数: 无
* 返 回 值: 无
* 函数名称: LeftMMC5983Init
* 功能描述: MMC5983初始化
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC5983Init(void)
{
@@ -285,10 +285,10 @@ void MMC5983Init(void)
}
/*****************************************************************************************
* 函数名称: LeftMMC5983Start
* 功能描述: MMC5983启动
* 参 数: 无
* 返 回 值: 无
* 函数名称: LeftMMC5983Start
* 功能描述: MMC5983启动
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC5983Start(void)
{
@@ -301,21 +301,21 @@ void MMC5983Start(void)
}
/*****************************************************************************************
* 函数名称: LeftMMC5983StartRead
* 功能描述: MMC5983启动读取
* 参 数: 无
* 返 回 值: 无
* 函数名称: LeftMMC5983StartRead
* 功能描述: MMC5983启动读取
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC5983StartRead(void)
{
MMC5983_Init();//读取时重新初始化
MMC5983_Init();//读取时重新初始化
}
/*****************************************************************************************
* 函数名称: MMC5983Stop
* 功能描述: MMC5983停止
* 参 数: 无
* 返 回 值: 无
* 函数名称: MMC5983Stop
* 功能描述: MMC5983停止
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC5983Stop(void)
{
@@ -331,10 +331,10 @@ void MMC5983Stop(void)
}
/*****************************************************************************************
* 函数名称: LeftMMC5983IntCallBack
* 功能描述: MMC5983中断回调
* 参 数: 无
* 返 回 值: 无
* 函数名称: LeftMMC5983IntCallBack
* 功能描述: MMC5983中断回调
* 参 数: 无
* 返 回 值: 无
*****************************************************************************************/
void MMC5983IntCallBack(void)
{