diff --git a/Module/Imu/Imu.c b/Module/Imu/Imu.c index 79b428b..38ba6be 100644 --- a/Module/Imu/Imu.c +++ b/Module/Imu/Imu.c @@ -1,23 +1,23 @@ -/************************************************************************************************ -* 程序版本:V3.0 -* 程序日期:2022-11-3 -* 程序作者: +锘/************************************************************************************************ +* 绋嬪簭鐗堟湰锛歏3.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后补偿到陀螺仪 + //灏嗚宸甈I鍚庤ˉ鍋垮埌闄铻轰华 gx = gx + Kp*ex + exInt; gy = gy + Kp*ey + eyInt; - gz = gz + Kp*ez + ezInt;//这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减 + gz = gz + Kp*ez + ezInt;//杩欓噷鐨刧z鐢变簬娌℃湁瑙傛祴鑰呰繘琛岀煫姝d細浜х敓婕傜Щ锛岃〃鐜板嚭鏉ョ殑灏辨槸绉垎鑷鎴栬嚜鍑 - //四元素的微分方程 + //鍥涘厓绱犵殑寰垎鏂圭▼ 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) } diff --git a/Module/Imu/Imu.h b/Module/Imu/Imu.h index 3005d6f..36b4536 100644 --- a/Module/Imu/Imu.h +++ b/Module/Imu/Imu.h @@ -1,17 +1,17 @@ -#ifndef _IMU_H_ +锘#ifndef _IMU_H_ #define _IMU_H_ #include #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 diff --git a/Module/LORA/sx127x.c b/Module/LORA/sx127x.c index 9dd68e7..c865bc6 100644 --- a/Module/LORA/sx127x.c +++ b/Module/LORA/sx127x.c @@ -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, diff --git a/Module/LaserTracing_Debug/UartDebug.c b/Module/LaserTracing_Debug/UartDebug.c index 7143afc..26c8426 100644 --- a/Module/LaserTracing_Debug/UartDebug.c +++ b/Module/LaserTracing_Debug/UartDebug.c @@ -1,4 +1,4 @@ -#include +锘#include #include #include #include @@ -62,24 +62,24 @@ void vcom_Send( char *format, ... ) void vcom_Print(uint8_t sLen) { -// 定义一个字符指针CurChar +// 瀹氫箟涓涓瓧绗︽寚閽圕urChar char* CurChar; - // 初始化ir + // 鍒濆鍖杋r ir = 0; - // 当ir小于sLen时,循环执行 + // 褰搃r灏忎簬sLen鏃讹紝寰幆鎵ц while(ir < sLen) { - // 获取字符指针CurChar + // 鑾峰彇瀛楃鎸囬拡CurChar CurChar = &buff[ir++]; - // 调用DebugUartSend函数,发送CurChar指向的字符,次数为1 + // 璋冪敤DebugUartSend鍑芥暟锛屽彂閫丆urChar鎸囧悜鐨勫瓧绗︼紝娆℃暟涓1 DBGUartSend((uint8_t*)CurChar, 1); } } -// 定义一个函数vcom_Send2,用于发送字符串 +// 瀹氫箟涓涓嚱鏁皏com_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数组中 + // 瑙f瀽瀛楃涓诧紝灏嗗弬鏁版斁鍏rgv鏁扮粍涓 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]锛屽苟灏哸rgc鍔1 if(argp != NULL) { argv[argc++] = argp; } - // 否则,将RxLen设置为0,并返回 + // 鍚﹀垯锛屽皢RxLen璁剧疆涓0锛屽苟杩斿洖 else { RxLen = 0; return; } - // 遍历DebugFun数组,查找argv[0]是否与DBGCmd匹配,若匹配则调用DBGExec函数 + // 閬嶅巻DebugFun鏁扮粍锛屾煡鎵綼rgv[0]鏄惁涓嶥BGCmd鍖归厤锛岃嫢鍖归厤鍒欒皟鐢―BGExec鍑芥暟 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 +// 鍑芥暟锛欴ebug1mSRoutine +// 鍔熻兘锛1ms璋冭瘯鏃堕挓routine void Debug1mSRoutine(void) { - // 如果1ms调试时钟计数器大于0 + // 濡傛灉1ms璋冭瘯鏃堕挓璁℃暟鍣ㄥぇ浜0 if(RxRevTimeOutCnt > 0) - // 1ms调试时钟计数器减1 + // 1ms璋冭瘯鏃堕挓璁℃暟鍣ㄥ噺1 RxRevTimeOutCnt--; } -// 定义函数DebugUartIRQ,用于处理串口接收中断 +// 瀹氫箟鍑芥暟DebugUartIRQ锛岀敤浜庡鐞嗕覆鍙f帴鏀朵腑鏂 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 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 diff --git a/Module/LaserTracing_Debug/UartDebug.h b/Module/LaserTracing_Debug/UartDebug.h index 1181435..44c1446 100644 --- a/Module/LaserTracing_Debug/UartDebug.h +++ b/Module/LaserTracing_Debug/UartDebug.h @@ -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; diff --git a/Module/lsm6dsl/lsm6dsl_app.c b/Module/lsm6dsl/lsm6dsl_app.c index 0317d9d..8eee0a7 100644 --- a/Module/lsm6dsl/lsm6dsl_app.c +++ b/Module/lsm6dsl/lsm6dsl_app.c @@ -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璁剧疆锛寃atermark 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);//鍦‵IFO涓负XL鍜岄檧铻哄惎鐢∕SByte璁板繂锛岀紦瀛樺搴 + lsm6dsl_block_data_update_set(&dev_ctx, 1); //fifo妯″紡ctrl3_c bdu蹇呴』涓1,鐩村埌璇诲彇MSB鍜孡SB鍚庢墠鏇存柊杈撳嚭瀵勫瓨鍣 + lsm6dsl_auto_increment_set(&dev_ctx, 1); //fifo妯″紡ctrl3_c if_inc蹇呴』涓1,閫氳繃涓茶鎺ュ彛(I2C鎴朣PI)杩涜澶氬瓧鑺傝闂椂鑷姩澧炲姞瀵勫瓨鍣ㄥ湴鍧銆 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); diff --git a/Module/mmc5983/mmc5983.c b/Module/mmc5983/mmc5983.c index 8b03eed..4d6bb9f 100644 --- a/Module/mmc5983/mmc5983.c +++ b/Module/mmc5983/mmc5983.c @@ -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锛屽け璐ヨ繑鍥瀎alse *****************************************************************************************/ 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锛屽け璐ヨ繑鍥瀎alse *****************************************************************************************/ 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锛屽け璐ヨ繑鍥瀎alse *****************************************************************************************/ 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) { diff --git a/driver/inc/opa.h b/driver/inc/opa.h index 2614c53..6e541a4 100644 --- a/driver/inc/opa.h +++ b/driver/inc/opa.h @@ -1,4 +1,4 @@ -/******************************************************************************* +锘/******************************************************************************* * Copyright (C) 2019, Huada Semiconductor Co.,Ltd All rights reserved. * * This software is owned and published by: @@ -83,39 +83,39 @@ typedef enum en_opa_oenx OpaOen4 = 6u //OUT4 }en_opa_oenx_t; -typedef enum en_opa_clksrc // 鑷姩鏍″噯鑴夊啿瀹藉害璁剧疆 +typedef enum en_opa_clksrc // 閼奉亜濮╅弽鈥冲櫙閼村鍟跨硅棄瀹崇拋鍓х枂 { - OpaM1Pclk = 0u, // 1涓狿CLK鍛ㄦ湡 - OpaM2Pclk = 1u, // 2涓狿CLK鍛ㄦ湡 - OpaM4Pclk = 2u, // 4涓狿CLK鍛ㄦ湡 - OpaM8Pclk = 3u, // 8涓狿CLK鍛ㄦ湡 - OpaM16Pclk = 4u, // 16涓狿CLK鍛ㄦ湡 - OpaM32Pclk = 5u, // 32涓狿CLK鍛ㄦ湡 - OpaM64Pclk = 6u, // 64涓狿CLK鍛ㄦ湡 - OpaM128Pclk = 7u, // 128涓狿CLK鍛ㄦ湡 - OpaM256Pclk = 8u, // 256涓狿CLK鍛ㄦ湡 - OpaM512Pclk = 9u, // 512涓狿CLK鍛ㄦ湡 - OpaM1024Pclk = 10u, // 1024涓狿CLK鍛ㄦ湡 - OpaM2048Pclk = 11u, // 2048涓狿CLK鍛ㄦ湡 - OpaM4096Pclk = 12u // 4096涓狿CLK鍛ㄦ湡 + OpaM1Pclk = 0u, // 1娑撶嬁CLK閸涖劍婀 + OpaM2Pclk = 1u, // 2娑撶嬁CLK閸涖劍婀 + OpaM4Pclk = 2u, // 4娑撶嬁CLK閸涖劍婀 + OpaM8Pclk = 3u, // 8娑撶嬁CLK閸涖劍婀 + OpaM16Pclk = 4u, // 16娑撶嬁CLK閸涖劍婀 + OpaM32Pclk = 5u, // 32娑撶嬁CLK閸涖劍婀 + OpaM64Pclk = 6u, // 64娑撶嬁CLK閸涖劍婀 + OpaM128Pclk = 7u, // 128娑撶嬁CLK閸涖劍婀 + OpaM256Pclk = 8u, // 256娑撶嬁CLK閸涖劍婀 + OpaM512Pclk = 9u, // 512娑撶嬁CLK閸涖劍婀 + OpaM1024Pclk = 10u, // 1024娑撶嬁CLK閸涖劍婀 + OpaM2048Pclk = 11u, // 2048娑撶嬁CLK閸涖劍婀 + OpaM4096Pclk = 12u // 4096娑撶嬁CLK閸涖劍婀 }en_opa_clksrc_t; typedef enum en_opa_set0ctrl { - enClkSwSet = 3u, // 杞欢鏍″噯浣胯兘 - enAzPulse = 2u, // 杞欢鏍″噯 - enTrigger = 1u, // 杞欢瑙﹀彂鑷姩鏁欓浂 - enAdctr = 1u // 浣胯兘ADC鍚姩瑙﹀彂OPA鑷姩鏍″噯鍔熻兘 + enClkSwSet = 3u, // 鏉烆垯娆㈤弽鈥冲櫙娴h儻鍏 + enAzPulse = 2u, // 鏉烆垯娆㈤弽鈥冲櫙 + enTrigger = 1u, // 鏉烆垯娆㈢憴锕褰傞懛顏勫З閺佹瑩娴 + enAdctr = 1u // 娴h儻鍏楢DC閸氼垰濮╃憴锕褰侽PA閼奉亜濮╅弽鈥冲櫙閸旂喕鍏 }en_opa_set0ctrl_t; typedef struct { - boolean_t bAzen; // 鑷姩鏁欓浂閰嶇疆 - boolean_t bClk_sw_set; // 鑷姩鏁欓浂閫夋嫨 - boolean_t bAz_pulse; // 杞欢鏍″噯璁剧疆 - boolean_t bTrigger; // 杞欢瑙﹀彂鏍″噯璁剧疆 - boolean_t bAdctr_en; // ADC鍚姩瑙﹀彂OPA鑷姩鏍″噯璁剧疆 - en_opa_clksrc_t enClksrc; // 鑷姩鏍″噯鑴夊啿瀹藉害璁剧疆 + boolean_t bAzen; // 閼奉亜濮╅弫娆撴祩闁板秶鐤 + boolean_t bClk_sw_set; // 閼奉亜濮╅弫娆撴祩闁瀚 + boolean_t bAz_pulse; // 鏉烆垯娆㈤弽鈥冲櫙鐠佸墽鐤 + boolean_t bTrigger; // 鏉烆垯娆㈢憴锕褰傞弽鈥冲櫙鐠佸墽鐤 + boolean_t bAdctr_en; // ADC閸氼垰濮╃憴锕褰侽PA閼奉亜濮╅弽鈥冲櫙鐠佸墽鐤 + en_opa_clksrc_t enClksrc; // 閼奉亜濮╅弽鈥冲櫙閼村鍟跨硅棄瀹崇拋鍓х枂 }stc_opa_zcfg_t; @@ -126,17 +126,17 @@ typedef struct /****************************************************************************** * Global function prototypes (definition in C source) ******************************************************************************/ -//OPA 閫氶亾浣胯兘 +//OPA 闁岸浜炬担鑳厴 extern void Opa_Cmd(boolean_t NewStatus); extern void Opa_CmdBuf(boolean_t NewStatus); -//OPA闆剁偣鏍″噯閰嶇疆 +//OPA闂嗗墎鍋i弽鈥冲櫙闁板秶鐤 extern void Opa_SetZero(stc_opa_zcfg_t* InitZero); -//浣胯兘杈撳嚭OUTX +//娴h儻鍏樻潏鎾冲毉OUTX extern void Opa_CmdOnex(en_opa_oenx_t onex, boolean_t NewState); -//閰嶇疆鏍¢浂鐩稿叧鐨勪綅 +//闁板秶鐤嗛弽锟犳祩閻╃ǹ鍙ч惃鍕秴 extern void Opa_ZeroBitCtrl(en_opa_set0ctrl_t CtrlBit, boolean_t NewState); //@} // OPA Group diff --git a/driver/inc/ram.h b/driver/inc/ram.h index 2b73f6a..50f62d2 100644 --- a/driver/inc/ram.h +++ b/driver/inc/ram.h @@ -1,4 +1,4 @@ -/************************************************************************************* +锘/************************************************************************************* * Copyright (C) 2016, Huada Semiconductor Co.,Ltd All rights reserved. * * This software is owned and published by: @@ -42,7 +42,7 @@ /******************************************************************************/ /** \file ram.h ** - ** RAM 鏁版嵁缁撴瀯鍙夾PI澹版槑. + ** RAM 閺佺増宓佺紒鎾寸崣澶綪I婢圭増妲. ** ** - 2019-04-02 LuX V1.0 ** @@ -96,15 +96,15 @@ extern "C" ******************************************************************************/ -///<涓柇鐩稿叧鍑芥暟 -///<涓柇浣胯兘/绂佹 +///<娑擃厽鏌囬惄绋垮彠閸戣姤鏆 +///<娑擃厽鏌囨担鑳厴/缁備焦顒 void Ram_EnableIrq(void); void Ram_DisableIrq(void); -///<涓柇鏍囧織鑾峰彇 +///<娑擃厽鏌囬弽鍥х箶閼惧嘲褰 boolean_t Ram_GetIntFlag(void); -///<涓柇鏍囧織娓呴櫎 +///<娑擃厽鏌囬弽鍥х箶濞撳懘娅 void Ram_ClearIntFlag(void); -///<濂囧伓鏍¢獙鍑洪敊鍦板潃鑾峰彇 +///<婵傚洤浼撻弽锟犵崣閸戞椽鏁婇崷鏉挎絻閼惧嘲褰 uint32_t Ram_ErrAddrGet(void); //@} // RamGroup diff --git a/driver/src/ram.c b/driver/src/ram.c index 44081b6..8f05194 100644 --- a/driver/src/ram.c +++ b/driver/src/ram.c @@ -1,4 +1,4 @@ -/****************************************************************************** +锘/****************************************************************************** *Copyright(C)2018, Huada Semiconductor Co.,Ltd All rights reserved. * * This software is owned and published by: @@ -85,7 +85,7 @@ /** ***************************************************************************** - ** \brief Ram濂囧伓鏍¢獙鍑洪敊鍦板潃鑾峰彇 + ** \brief Ram婵傚洤浼撻弽锟犵崣閸戞椽鏁婇崷鏉挎絻閼惧嘲褰 ** ** ** \retval ERROR ADDRESS @@ -97,7 +97,7 @@ uint32_t Ram_ErrAddrGet(void) /** ***************************************************************************** - ** \brief Ram涓柇鏍囧織鑾峰彇 + ** \brief Ram娑擃厽鏌囬弽鍥х箶閼惧嘲褰 ** ** ** \retval TRUE or FALSE @@ -116,7 +116,7 @@ boolean_t Ram_GetIntFlag(void) /** ***************************************************************************** - ** \brief Ram涓柇鏍囧織娓呴櫎 + ** \brief Ram娑擃厽鏌囬弽鍥х箶濞撳懘娅 ** ** ** \retval Null @@ -128,7 +128,7 @@ void Ram_ClearIntFlag(void) /** ***************************************************************************** - ** \brief Ram涓柇浣胯兘 + ** \brief Ram娑擃厽鏌囨担鑳厴 ** ** \retval Null *****************************************************************************/ @@ -139,7 +139,7 @@ void Ram_EnableIrq (void) /** ***************************************************************************** - ** \brief ram涓柇绂佹 + ** \brief ram娑擃厽鏌囩粋浣诡剾 ** ** \retval Null *****************************************************************************/ diff --git a/source/inc/Algorithm.h b/source/inc/Algorithm.h index 096a690..4d4e88e 100644 --- a/source/inc/Algorithm.h +++ b/source/inc/Algorithm.h @@ -1,4 +1,4 @@ -#ifndef __ALGORITHM_H +锘#ifndef __ALGORITHM_H #define __ALGORITHM_H #include @@ -11,20 +11,20 @@ #define CRC16_BASE 0xA001 -// 峰值谷值检查结果结构体 +// 宄板艰胺鍊兼鏌ョ粨鏋滅粨鏋勪綋 typedef struct { - bool peaks_positive; // 所有峰值是否大于0 - bool valleys_negative; // 所有谷值是否小于0 - int peak_count; // 检测到的峰值数量 - int valley_count; // 检测到的谷值数量 + bool peaks_positive; // 鎵鏈夊嘲鍊兼槸鍚﹀ぇ浜0 + bool valleys_negative; // 鎵鏈夎胺鍊兼槸鍚﹀皬浜0 + int peak_count; // 妫娴嬪埌鐨勫嘲鍊兼暟閲 + int valley_count; // 妫娴嬪埌鐨勮胺鍊兼暟閲 } PeakValleyCheck; -// 趋势分析结果结构体 +// 瓒嬪娍鍒嗘瀽缁撴灉缁撴瀯浣 typedef struct { - double slope; // 线性斜率 - int sign_changes; // 符号变化次数 - char trend_type; // 趋势类型 - char steepness; // 陡峭度 + double slope; // 绾挎ф枩鐜 + int sign_changes; // 绗﹀彿鍙樺寲娆℃暟 + char trend_type; // 瓒嬪娍绫诲瀷 + char steepness; // 闄″抄搴 } TrendResult; PeakValleyCheck check_peaks_valleys(int data[], int length); diff --git a/source/inc/SGCP.h b/source/inc/SGCP.h index be0afe1..c5b2f37 100644 --- a/source/inc/SGCP.h +++ b/source/inc/SGCP.h @@ -1,13 +1,13 @@ -/* 传感器通用通讯协议V1.0*/ +/* 浼犳劅鍣ㄩ氱敤閫氳鍗忚V1.0*/ #ifndef __SGCP_H #define __SGCP_H #include "bsp.h" -#define WORK_MODE 1 //工作模式选择,0、本机为查询模式,1、本机为上报模式(低功耗) -#define SGCP_SELECT 1 //协议选择,0、本机为单个主设备接多个子设备,1、本机为单个主设备不接子设备,2、本机为单个子设备 +#define WORK_MODE 1 //宸ヤ綔妯″紡閫夋嫨锛0銆佹湰鏈轰负鏌ヨ妯″紡锛1銆佹湰鏈轰负涓婃姤妯″紡(浣庡姛鑰) +#define SGCP_SELECT 1 //鍗忚閫夋嫨锛0銆佹湰鏈轰负鍗曚釜涓昏澶囨帴澶氫釜瀛愯澶囷紝1銆佹湰鏈轰负鍗曚釜涓昏澶囦笉鎺ュ瓙璁惧锛2銆佹湰鏈轰负鍗曚釜瀛愯澶 -typedef struct {//网关与主设备固定帧 +typedef struct {//缃戝叧涓庝富璁惧鍥哄畾甯 uint8_t Header; uint8_t GWAddr[6]; uint8_t MDAddr[6]; @@ -15,56 +15,56 @@ typedef struct {// uint16_t PayloadLen; }__attribute__ ((packed))GatewayFrameHeader_t,*GatewayFrameHeader; -typedef struct {//主设备与子设备固定帧 +typedef struct {//涓昏澶囦笌瀛愯澶囧浐瀹氬抚 uint8_t Header; uint8_t Addr; uint8_t Cmd; uint8_t PayloadLen; }__attribute__ ((packed))SubsetFrameHeader_t,*SubsetFrameHeader; -typedef struct {//内部指令固定帧 +typedef struct {//鍐呴儴鎸囦护鍥哄畾甯 uint8_t Header; uint8_t MAC[6]; uint8_t Cmd; uint8_t PayloadLen; }__attribute__ ((packed))InsideFrameHeader_t,*InsideFrameHeader; -typedef struct {//主设备固定包头 - uint8_t BatLevel; //电池电量 - int8_t RSSI; //信号强度 - int8_t Nsr; //信噪比 +typedef struct {//涓昏澶囧浐瀹氬寘澶 + uint8_t BatLevel; //鐢垫睜鐢甸噺 + int8_t RSSI; //淇″彿寮哄害 + int8_t Nsr; //淇″櫔姣 }__attribute__ ((packed))MasterDev_T,*MasterDevDp; -typedef struct {//0x0006 三维连续变形 - int16_t PitchAngle; //俯仰角 (范围±900)单位0.1° - int16_t RollAngle; //横滚角 (范围±900)单位0.1° - int16_t YawAngle; //偏航角 (范围0~3600)单位0.1° +typedef struct {//0x0006 涓夌淮杩炵画鍙樺舰 + int16_t PitchAngle; //淇话瑙 锛堣寖鍥绰1800锛夊崟浣0.1掳 + int16_t RollAngle; //妯粴瑙 锛堣寖鍥绰1800锛夊崟浣0.1掳 + int16_t YawAngle; //鍋忚埅瑙 锛堣寖鍥0~3600锛夊崟浣0.1掳 }__attribute__ ((packed))ContDefor3D_T,*ContDefor3DDp; -typedef struct {//0x0007 通讯单元 +typedef struct {//0x0007 閫氳鍗曞厓 MasterDev_T MasterDev; }__attribute__ ((packed))CommUnit_T,*CommUnitDp; -typedef struct {//0x0008 三维应力 - int16_t PitchAngle; //俯仰角(范围±900)单位0.1° - int16_t RollAngle; //横滚角(范围±900)单位0.1° - int16_t YawAngle; //偏航角(范围0~3600)单位0.1° - int32_t Strain1; //X轴应力值(范围±10MPa,单位Pa) - int32_t Strain2; //Y轴应力值(范围±10MPa,单位Pa) - int32_t Strain3; //Z轴应力值(范围±10MPa,单位Pa) +typedef struct {//0x0008 涓夌淮搴斿姏 + int16_t PitchAngle; //淇话瑙掞紙鑼冨洿卤900锛夊崟浣0.1掳 + int16_t RollAngle; //妯粴瑙掞紙鑼冨洿卤900锛夊崟浣0.1掳 + int16_t YawAngle; //鍋忚埅瑙掞紙鑼冨洿0~3600锛夊崟浣0.1掳 + int32_t Strain1; //X杞村簲鍔涘硷紙鑼冨洿卤10MPa,鍗曚綅Pa锛 + int32_t Strain2; //Y杞村簲鍔涘硷紙鑼冨洿卤10MPa,鍗曚綅Pa锛 + int32_t Strain3; //Z杞村簲鍔涘硷紙鑼冨洿卤10MPa,鍗曚綅Pa锛 }__attribute__ ((packed))Force3D_T,*Force3DDp; -typedef struct {//0x0009 激光示踪 +typedef struct {//0x0009 婵鍏夌ず韪 MasterDev_T MasterDev; - int16_t PitchAngle; //俯仰角 (范围±900)单位0.1° - int16_t RollAngle; //横滚角 (范围±900)单位0.1° - int16_t YawAngle; //偏航角 (范围0~3600)单位0.1° + int16_t PitchAngle; //淇话瑙 锛堣寖鍥绰900锛夊崟浣0.1掳 + int16_t RollAngle; //妯粴瑙 锛堣寖鍥绰900锛夊崟浣0.1掳 + int16_t YawAngle; //鍋忚埅瑙 锛堣寖鍥0~3600锛夊崟浣0.1掳 }__attribute__ ((packed))LaserTracing_T,*LaserTracingDp; -typedef struct {//0x000E 裂缝仪 - int16_t XwiseDist; //横向位移量(范围0~150mm) - int16_t LgthwysDist; //纵向位移距离(范围0~150mm) - int16_t RotationDist; //旋转位移距离(范围0~150mm) +typedef struct {//0x000E 瑁傜紳浠 + int16_t XwiseDist; //妯悜浣嶇Щ閲忥紙鑼冨洿0~150mm锛 + int16_t LgthwysDist; //绾靛悜浣嶇Щ璺濈锛堣寖鍥0~150mm锛 + int16_t RotationDist; //鏃嬭浆浣嶇Щ璺濈锛堣寖鍥0~150mm锛 }__attribute__ ((packed))Crack_T,*CrackDp; typedef struct { @@ -73,9 +73,9 @@ typedef struct { Force3D_T Force3D; Crack_T Crack; LaserTracing_T LaserTracing; -}__attribute__ ((packed))DeviceData_T,*DeviceDp; //设备数据 +}__attribute__ ((packed))DeviceData_T,*DeviceDp; //璁惧鏁版嵁 -/*接收子设备数据状态机*/ +/*鎺ユ敹瀛愯澶囨暟鎹姸鎬佹満*/ typedef enum { SUB_STATUS_IDLE, SUB_STATUS_BROADCAST_CALI, @@ -89,7 +89,7 @@ typedef enum { SUB_STATUS_BROADCAST_SYNC_TIME, }SubStatus_m; -/*接收网关数据状态机*/ +/*鎺ユ敹缃戝叧鏁版嵁鐘舵佹満*/ typedef enum { GW_STATUS_IDLE, GW_STATUS_WAIT_SUBIDLE, @@ -99,13 +99,13 @@ typedef enum { GW_STATUS_READ_SENSOR, GW_STATUS_SET_COL_TIME, GW_STATUS_SYNC_TIME, - GW_STATUS_UPLOAD_SENSOR,//主动上报模式时会使用该状态 - GW_STATUS_WAIT_UPLOAD,//主动上报模式时会使用该状态 - GW_STATUS_LASER_STARES,//激光状态回应 + GW_STATUS_UPLOAD_SENSOR,//涓诲姩涓婃姤妯″紡鏃朵細浣跨敤璇ョ姸鎬 + GW_STATUS_WAIT_UPLOAD,//涓诲姩涓婃姤妯″紡鏃朵細浣跨敤璇ョ姸鎬 + GW_STATUS_LASER_STARES,//婵鍏夌姸鎬佸洖搴 GW_STATUS_SIGNAL, GW_STATUS_WAIT_SIGNAL, }GWStatus_m; -/*接收主设备数据状态机*/ +/*鎺ユ敹涓昏澶囨暟鎹姸鎬佹満*/ typedef enum { MAS_STATUS_IDLE, MAS_STATUS_CALI, @@ -114,81 +114,81 @@ typedef enum { MAS_STATUS_SET_COL_TIME, MAS_STATUS_SYNC_TIME, }MasStatus_m; -/*内部指令数据状态机*/ +/*鍐呴儴鎸囦护鏁版嵁鐘舵佹満*/ typedef enum { IN_STATUS_IDLE, IN_STATUS_UPDATE, IN_STATUS_ALTER_485ADDR, }InStatus_m; -/*网关到主设备命令集*/ +/*缃戝叧鍒颁富璁惧鍛戒护闆*/ typedef enum { - GWTOMD_CMD_LOGIN = 0x00, //0x00,设备注册 - GWTOMD_CMD_CALI = 0x01, //0x01, 校准指令 - GWTOMD_CMD_READ_UPLOAD_SENSOR = 0x02, //0x02,读取数据指令or上传数据指令 - GWTOMD_CMD_SET_COL_TIME = 0x05, //0x05,设置采集时间间隔 - GWTOMD_CMD_SYNC_TIME = 0x06, //0x06,时间同步 - GWTOMD_CMD_SET_LASER = 0x08,//打开or关闭激光 + GWTOMD_CMD_LOGIN = 0x00, //0x00锛岃澶囨敞鍐 + GWTOMD_CMD_CALI = 0x01, //0x01, 鏍″噯鎸囦护 + GWTOMD_CMD_READ_UPLOAD_SENSOR = 0x02, //0x02锛岃鍙栨暟鎹寚浠r涓婁紶鏁版嵁鎸囦护 + GWTOMD_CMD_SET_COL_TIME = 0x05, //0x05锛岃缃噰闆嗘椂闂撮棿闅 + GWTOMD_CMD_SYNC_TIME = 0x06, //0x06锛屾椂闂村悓姝 + GWTOMD_CMD_SET_LASER = 0x08,//鎵撳紑or鍏抽棴婵鍏 GWTOMD_CMD_SIGNAL = 0x09, }GWTOMD_CMD_M; -/*主设备到子设备命令集*/ +/*涓昏澶囧埌瀛愯澶囧懡浠ら泦*/ typedef enum { - MDTOSD_CMD_CALI = 0x01, //0x01, 校准指令 - MDTOSD_CMD_READ_DATA = 0x02, //0x02,读取数据指令 - MDTOSD_CMD_INQUIRE = 0x03, //0x03, 设备查询指令 - MDTOSD_CMD_SET_COL_TIME = 0x05, //0x05,设置采集时间间隔 - MDTOSD_CMD_SYNC_TIME = 0x06, //0x06,时间同步 + MDTOSD_CMD_CALI = 0x01, //0x01, 鏍″噯鎸囦护 + MDTOSD_CMD_READ_DATA = 0x02, //0x02锛岃鍙栨暟鎹寚浠 + MDTOSD_CMD_INQUIRE = 0x03, //0x03, 璁惧鏌ヨ鎸囦护 + MDTOSD_CMD_SET_COL_TIME = 0x05, //0x05锛岃缃噰闆嗘椂闂撮棿闅 + MDTOSD_CMD_SYNC_TIME = 0x06, //0x06锛屾椂闂村悓姝 }MDTOSD_CMD_M; -/*内部指令命令集*/ +/*鍐呴儴鎸囦护鍛戒护闆*/ typedef enum { - INSIDE_CMD_UPDATE = 0x81, //0x81,升级程序下发请求,由主机发起,从机应答 - INSIDE_CMD_ALTER_485ADDR = 0x04, //0x04, 设置设备485地址 + INSIDE_CMD_UPDATE = 0x81, //0x81锛屽崌绾х▼搴忎笅鍙戣姹傦紝鐢变富鏈哄彂璧凤紝浠庢満搴旂瓟 + INSIDE_CMD_ALTER_485ADDR = 0x04, //0x04, 璁剧疆璁惧485鍦板潃 }INSIDE_CMD_M; -/*设备类型*/ +/*璁惧绫诲瀷*/ typedef enum { - NUL, //0x0000 空设备 - FORCE_6D, //0x0001 六维应力 - OSMOTIC_PRESSURE, //0x0002 渗透压 - ELASTIC_WAVEGUIDE, //0x0003 弹性波导 - DIELECTRIC_MASS, //0x0004 介电质普 - _0x0005, //0x0005 保留 - CONT_DEFOR_3D, //0x0006 三维连续变形 - COMM_UNIT, //0x0007 通讯单元 - FORCE_3D, //0x0008 三维应力 - LASER_TRACING, //0x0009 激光示踪 - _0x000A, //0x000A 保留 - _0x000B, //0x000B 保留 - _0x000C, //0x000C 保留 - MULTI_PARAMETER_FUSION, //0x000D 多参数融合 - CRACK_DETECTION, //0x000E 裂缝仪 - _0x000F, //0x000F 保留 - ATTITUDE_MONITOR, //0x0010 姿态检测 - LASER_DISPLACE, //0x0011 激光位移 - REBAR_STRESS, //0x0012 钢筋应力 - ANCHOR_ROD_STRESS, //0x0013 锚杆轴力 - SURFACE_STRESS, //0x0014 表面应力 - PRESSURE, //0x0015 压力 - MICROWAVE_DISPLACE, //0x0016 微波测距 + NUL, //0x0000 绌鸿澶 + FORCE_6D, //0x0001 鍏淮搴斿姏 + OSMOTIC_PRESSURE, //0x0002 娓楅忓帇 + ELASTIC_WAVEGUIDE, //0x0003 寮规ф尝瀵 + DIELECTRIC_MASS, //0x0004 浠嬬數璐ㄦ櫘 + _0x0005, //0x0005 淇濈暀 + CONT_DEFOR_3D, //0x0006 涓夌淮杩炵画鍙樺舰 + COMM_UNIT, //0x0007 閫氳鍗曞厓 + FORCE_3D, //0x0008 涓夌淮搴斿姏 + LASER_TRACING, //0x0009 婵鍏夌ず韪 + _0x000A, //0x000A 淇濈暀 + _0x000B, //0x000B 淇濈暀 + _0x000C, //0x000C 淇濈暀 + MULTI_PARAMETER_FUSION, //0x000D 澶氬弬鏁拌瀺鍚 + CRACK_DETECTION, //0x000E 瑁傜紳浠 + _0x000F, //0x000F 淇濈暀 + ATTITUDE_MONITOR, //0x0010 濮挎佹娴 + LASER_DISPLACE, //0x0011 婵鍏変綅绉 + REBAR_STRESS, //0x0012 閽㈢瓔搴斿姏 + ANCHOR_ROD_STRESS, //0x0013 閿氭潌杞村姏 + SURFACE_STRESS, //0x0014 琛ㄩ潰搴斿姏 + PRESSURE, //0x0015 鍘嬪姏 + MICROWAVE_DISPLACE, //0x0016 寰尝娴嬭窛 }DEVICE_TYPE_M; -/*通讯方式*/ +/*閫氳鏂瑰紡*/ typedef enum { - LORA = 0x01, //0x01 LORA通讯 - RS485 = 0x02, //0x02 RS485通讯 - RS232 = 0x03, //0x03 RS232通讯 - CAN = 0x04, //0x04 CAN通讯 - CATONE = 0x05, //0x05 _4G通讯 - BLE = 0x06, //0x06 BLE通讯 - WIFI = 0x07, //0x07 WIFI通讯 - UART = 0x08, //0x08 UART通讯 + LORA = 0x01, //0x01 LORA閫氳 + RS485 = 0x02, //0x02 RS485閫氳 + RS232 = 0x03, //0x03 RS232閫氳 + CAN = 0x04, //0x04 CAN閫氳 + CATONE = 0x05, //0x05 _4G閫氳 + BLE = 0x06, //0x06 BLE閫氳 + WIFI = 0x07, //0x07 WIFI閫氳 + UART = 0x08, //0x08 UART閫氳 }COMM_WAY_M; -/*设备标志*/ +/*璁惧鏍囧織*/ typedef enum { - MASTER = 0x000000, //0x000000 主设备 - SUBSET = 0x800000, //0x800000 子设备 + MASTER = 0x000000, //0x000000 涓昏澶 + SUBSET = 0x800000, //0x800000 瀛愯澶 }DEVICE_SIGN_M; typedef struct { - __IO GWTOMD_CMD_M rCmdGWToMD; //网关下发命令 - __IO GWTOMD_CMD_M sCmdMDToGW; //主设备返回命令 + __IO GWTOMD_CMD_M rCmdGWToMD; //缃戝叧涓嬪彂鍛戒护 + __IO GWTOMD_CMD_M sCmdMDToGW; //涓昏澶囪繑鍥炲懡浠 __IO uint16_t rPayLen; __IO bool HeaderFrame; __IO uint8_t RxLen; @@ -196,8 +196,8 @@ typedef struct { }GWTOMD_Rx_T; typedef struct { - __IO MDTOSD_CMD_M rCmdSDToMD; //子设备返回命令 - __IO MDTOSD_CMD_M sCmdMDToSD; //主设备下发命令 + __IO MDTOSD_CMD_M rCmdSDToMD; //瀛愯澶囪繑鍥炲懡浠 + __IO MDTOSD_CMD_M sCmdMDToSD; //涓昏澶囦笅鍙戝懡浠 __IO uint8_t rPayLen; __IO bool HeaderFrame; __IO uint8_t RxLen; @@ -215,12 +215,12 @@ typedef struct { GWTOMD_Rx_T GWRS485Rx; uint8_t GatewayBuffLen; uint8_t GatewayBuff[256]; - uint8_t GatewayRevTimeoutCnt; //网关串口接收超时计数 + uint8_t GatewayRevTimeoutCnt; //缃戝叧涓插彛鎺ユ敹瓒呮椂璁℃暟 MDTOSD_Rx_T SDRS485Rx; uint8_t SubsetBuffLen; uint8_t SubsetBuff[256]; - uint8_t SubsetRevTimeoutCnt; //子设备串口接收超时计数 + uint8_t SubsetRevTimeoutCnt; //瀛愯澶囦覆鍙f帴鏀惰秴鏃惰鏁 uint8_t InsidePayLen; uint8_t InsideBuffLen; @@ -236,45 +236,47 @@ typedef struct { DeviceData_T DevData; - bool SubsetCaliOk; //子设备校准标志位 - bool MasterCaliOk; //主设备标校标志位 + bool SubsetCaliOk; //瀛愯澶囨牎鍑嗘爣蹇椾綅 + bool MasterCaliOk; //涓昏澶囨爣鏍℃爣蹇椾綅 - uint8_t ReadDataAdd; //获取数据地址 - uint16_t DeviceDataLen; //在线设备采集到的数据长度总和 - uint8_t DeviceDataBuff[512]; //在线设备采集到的数据缓存(主设备的数据永远排在最前面) - uint8_t DeviceData[512]; //在线设备采集到的数据(主设备的数据永远排在最前面) - bool SubsetReadDataOk; //子设备读取数据成功标志位 - bool DeviceReadDataOk; //设备读取数据完成标志位 + uint8_t ReadDataAdd; //鑾峰彇鏁版嵁鍦板潃 + uint16_t DeviceDataLen; //鍦ㄧ嚎璁惧閲囬泦鍒扮殑鏁版嵁闀垮害鎬诲拰 + uint8_t DeviceDataBuff[512]; //鍦ㄧ嚎璁惧閲囬泦鍒扮殑鏁版嵁缂撳瓨锛堜富璁惧鐨勬暟鎹案杩滄帓鍦ㄦ渶鍓嶉潰锛 + uint8_t DeviceData[512]; //鍦ㄧ嚎璁惧閲囬泦鍒扮殑鏁版嵁锛堜富璁惧鐨勬暟鎹案杩滄帓鍦ㄦ渶鍓嶉潰锛 + bool SubsetReadDataOk; //瀛愯澶囪鍙栨暟鎹垚鍔熸爣蹇椾綅 + bool DeviceReadDataOk; //璁惧璇诲彇鏁版嵁瀹屾垚鏍囧織浣 - uint8_t DeviceN; //在线设备数量(最多32个子设备,1个主设备) - uint8_t Dev485Addr; //在线设备485地址(最多32个子设备,1个主设备) - uint8_t Dev485Addrs[16]; //在线设备485地址缓存,0位为0x00广播地址 - uint8_t DeviceMAC[16][6]; //在线设备的唯一MAC地址(主设备的MAC永远排在最前面) - bool SubsetMACOk; //在线子设备MAC获取成功标志位 - bool DeviceMACOk; //在线设备获取完成标志位 + uint8_t DeviceN; //鍦ㄧ嚎璁惧鏁伴噺锛堟渶澶32涓瓙璁惧,1涓富璁惧锛 + uint8_t Dev485Addr; //鍦ㄧ嚎璁惧485鍦板潃锛堟渶澶32涓瓙璁惧,1涓富璁惧锛 + uint8_t Dev485Addrs[16]; //鍦ㄧ嚎璁惧485鍦板潃缂撳瓨锛0浣嶄负0x00骞挎挱鍦板潃 + uint8_t DeviceMAC[16][6]; //鍦ㄧ嚎璁惧鐨勫敮涓MAC鍦板潃锛堜富璁惧鐨凪AC姘歌繙鎺掑湪鏈鍓嶉潰锛 + bool SubsetMACOk; //鍦ㄧ嚎瀛愯澶嘙AC鑾峰彇鎴愬姛鏍囧織浣 + bool DeviceMACOk; //鍦ㄧ嚎璁惧鑾峰彇瀹屾垚鏍囧織浣 - bool CollTimeSetOk; //采集时间设置成功标志位 - uint8_t CollTimeAdd; //设置采集时间地址 + bool CollTimeSetOk; //閲囬泦鏃堕棿璁剧疆鎴愬姛鏍囧織浣 + uint8_t CollTimeAdd; //璁剧疆閲囬泦鏃堕棿鍦板潃 - bool SyncTimeOk; //时间同步成功标志位 - uint8_t SyncTimeAdd; //时间同步设备地址 + bool SyncTimeOk; //鏃堕棿鍚屾鎴愬姛鏍囧織浣 + uint8_t SyncTimeAdd; //鏃堕棿鍚屾璁惧鍦板潃 - bool BroadCmd; //广播命令 + bool BroadCmd; //骞挎挱鍛戒护 - bool LoginOk; //注册成功标志位 + bool LoginOk; //娉ㄥ唽鎴愬姛鏍囧織浣 bool LoginMess; - bool UploadOk; //上传成功标志位 + bool UploadOk; //涓婁紶鎴愬姛鏍囧織浣 bool UploadMess; - bool Gateway_IRQ_Status; //网关接收中断 - bool Subset_IRQ_Status; //子设备接收中断 - bool TimingAcquisition; //采集传感器数据 + bool Gateway_IRQ_Status; //缃戝叧鎺ユ敹涓柇 + bool Subset_IRQ_Status; //瀛愯澶囨帴鏀朵腑鏂 + bool TimingAcquisition; //閲囬泦浼犳劅鍣ㄦ暟鎹 - /**激光示踪私有**/ - bool LaserOnOff; //打开与关闭激光标志位 + /**婵鍏夌ず韪鏈**/ + bool LaserOnOff; //鎵撳紑涓庡叧闂縺鍏夋爣蹇椾綅 int8_t SignalRSSI; int8_t SignalSNR; + uint8_t LaserTimerMinutes; //婵鍏夊畾鏃跺叧闂垎閽熸暟 + uint16_t LaserTimerCount; //婵鍏夊畾鏃惰鏁(RTC 30s) }SGCP_t; extern SGCP_t SGCP; diff --git a/source/inc/Update.h b/source/inc/Update.h index b13e004..2c8daf8 100644 --- a/source/inc/Update.h +++ b/source/inc/Update.h @@ -1,4 +1,4 @@ -#ifndef __UPDATE_H +锘#ifndef __UPDATE_H #define __UPDATE_H #include @@ -23,14 +23,14 @@ #define BOOT_PARA_ADDRESS (0x0001FC00)//(FLASH_BASE + BOOT_SIZE) #define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE) -//主机下发升级请求载荷结构体 +//涓绘満涓嬪彂鍗囩骇璇锋眰杞借嵎缁撴瀯浣 typedef struct { uint16_t PackageNum; uint32_t AppSize; uint32_t AppCrc32; }__attribute__ ((packed))UpDataRequset_t, *UDReq; -//帧头结构体 +//甯уご缁撴瀯浣 typedef struct { uint8_t Header; uint8_t DevMac[6]; @@ -39,14 +39,14 @@ typedef struct { }__attribute__((packed))UpdateFrameHeader_t,*pUpdateFrameHeader; -//输入接口函数定义,需根据接口重新定义 +//杈撳叆鎺ュ彛鍑芥暟瀹氫箟,闇鏍规嵁鎺ュ彛閲嶆柊瀹氫箟 #define U_DBG_LOG(...) DBG_LOG(__VA_ARGS__) #define U_DELAY_MS(x) delay_ms(x) #define U_SYSTEM_TESET() SystemReset() #define SAVE_BOOT_PARA(addr) SAVE_APP_PARA(addr) #define READ_BOOT_PARA(addr) READ_APP_PARA(addr) -//输出接口 +//杈撳嚭鎺ュ彛 void Update(uint8_t *PayLoad); void UpdateInit(void); #endif \ No newline at end of file diff --git a/source/inc/bsp.h b/source/inc/bsp.h index 920b5c5..0aa1a19 100644 --- a/source/inc/bsp.h +++ b/source/inc/bsp.h @@ -1,4 +1,4 @@ -#ifndef _BSP_H +锘#ifndef _BSP_H #define _BSP_H #include @@ -8,23 +8,23 @@ #include "spi.h" #include "Update.h" -/*模块启用与关闭*/ -#define USE_DEBUG 1 //调试串口选择,0、关闭,1、启用 -#define USE_VBAT_AD 1 //电池电压AD获取选择,0、关闭,1、启用 -#define USE_WDT 1 //看门狗选择,0、关闭,1启用 -#define USE_EXFALSE 0 //外部FALSE存储选择,0、关闭,1、启用 -#define USE_LED 1 //状态灯选择,0、关闭,1、启用 -#define USE_RTC 1 //RTC时钟开关,0、关闭,1、开启 +/*妯″潡鍚敤涓庡叧闂*/ +#define USE_DEBUG 1 //璋冭瘯涓插彛閫夋嫨锛0銆佸叧闂紝1銆佸惎鐢 +#define USE_VBAT_AD 1 //鐢垫睜鐢靛帇AD鑾峰彇閫夋嫨锛0銆佸叧闂紝1銆佸惎鐢 +#define USE_WDT 1 //鐪嬮棬鐙楅夋嫨锛0銆佸叧闂紝1鍚敤 +#define USE_EXFALSE 0 //澶栭儴FALSE瀛樺偍閫夋嫨锛0銆佸叧闂紝1銆佸惎鐢 +#define USE_LED 1 //鐘舵佺伅閫夋嫨锛0銆佸叧闂紝1銆佸惎鐢 +#define USE_RTC 1 //RTC鏃堕挓寮鍏筹紝0銆佸叧闂紝1銆佸紑鍚 -#define USE_LPUART0 1 //LPUART0开关,0、关闭,1、启用 -#define USE_UART0 1 //UART0开关,0、关闭,1、启用 -#define USE_UART1 0 //UART0开关,0、关闭,1、启用 -#define USE_I2C0 1 //I2C0开关,0、关闭,1、启用 -#define USE_I2C1 1 //I2C1开关,0、关闭,1、启用 -#define USE_SPI0 1 //SPI1开关,0、关闭,1、启用 -#define USE_SPI1 0 //SPI1开关,0、关闭,1、启用 +#define USE_LPUART0 1 //LPUART0寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_UART0 1 //UART0寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_UART1 0 //UART0寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_I2C0 1 //I2C0寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_I2C1 1 //I2C1寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_SPI0 1 //SPI1寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 +#define USE_SPI1 0 //SPI1寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 -//#define USE_BOOTLOADER 1 //BOOTLOADER开关,0、关闭,1、启用 +//#define USE_BOOTLOADER 1 //BOOTLOADER寮鍏筹紝0銆佸叧闂紝1銆佸惎鐢 //<<---------------------------- MCU -------------------------------->> //< UART0 @@ -45,167 +45,167 @@ #define UART1_RX_PIN GpioPin1 #define UART1_RX_AF GpioAf3 -//< 低功耗串口 -#define LPUart0_TxPortx GpioPortB //低功耗串口0通道 -#define LPUART0_TxPinx GpioPin10 //配置PB10为LPUART0_Tx +//< 浣庡姛鑰椾覆鍙 +#define LPUart0_TxPortx GpioPortB //浣庡姛鑰椾覆鍙0閫氶亾 +#define LPUART0_TxPinx GpioPin10 //閰嶇疆PB10涓篖PUART0_Tx #define LPUART0_TX_AF GpioAf4 -#define LPUart0_RxPortx GpioPortB //低功耗串口0通道 -#define LPUART0_RxPinx GpioPin11 //配置PB11为LPUART0_Rx +#define LPUart0_RxPortx GpioPortB //浣庡姛鑰椾覆鍙0閫氶亾 +#define LPUART0_RxPinx GpioPin11 //閰嶇疆PB11涓篖PUART0_Rx #define LPUART0_RX_AF GpioAf3 //< SPI0 -#define SPI0_NSS_PORTx GpioPortA //NSSIO口 -#define SPI0_NSS_PINx GpioPin15 //配置PA04为NSS -#define SET_SPI0_NSS() Gpio_SetIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS拉高 -#define CLR_SPI0_NSS() Gpio_ClrIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS拉低 +#define SPI0_NSS_PORTx GpioPortA //NSSIO鍙 +#define SPI0_NSS_PINx GpioPin15 //閰嶇疆PA04涓篘SS +#define SET_SPI0_NSS() Gpio_SetIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS鎷夐珮 +#define CLR_SPI0_NSS() Gpio_ClrIO(SPI0_NSS_PORTx, SPI0_NSS_PINx) //NSS鎷変綆 #define SPI0_NSS_AF GpioAf1 -#define SPI0_SCK_PORTx GpioPortB //SCKIO口 -#define SPI0_SCK_PINx GpioPin3 //配置PA05为SCK -#define SET_SPI0_SCK() Gpio_SetIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK拉高 -#define CLR_SPI0_SCK() Gpio_ClrIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK拉低 +#define SPI0_SCK_PORTx GpioPortB //SCKIO鍙 +#define SPI0_SCK_PINx GpioPin3 //閰嶇疆PA05涓篠CK +#define SET_SPI0_SCK() Gpio_SetIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK鎷夐珮 +#define CLR_SPI0_SCK() Gpio_ClrIO(SPI0_SCK_PORTx, SPI0_SCK_PINx) //SCK鎷変綆 #define SPI0_SCK_AF GpioAf1 -#define SPI0_MISO_PORTx GpioPortB //MISOIO口 -#define SPI0_MISO_PINx GpioPin4 //配置PA06为MISO -#define SET_SPI0_MISO() Gpio_SetIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO拉高 -#define CLR_SPI0_MISO() Gpio_ClrIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO拉低 +#define SPI0_MISO_PORTx GpioPortB //MISOIO鍙 +#define SPI0_MISO_PINx GpioPin4 //閰嶇疆PA06涓篗ISO +#define SET_SPI0_MISO() Gpio_SetIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO鎷夐珮 +#define CLR_SPI0_MISO() Gpio_ClrIO(SPI0_MISO_PORTx, SPI0_MISO_PINx) //MISO鎷変綆 #define SPI0_MISO_AF GpioAf1 -#define SPI0_MOSI_PORTx GpioPortB //MOSIIO口 -#define SPI0_MOSI_PINx GpioPin5 //配置PA07为MOSI -#define SET_SPI0_MOSI() Gpio_SetIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI拉高 -#define CLR_SPI0_MOSI() Gpio_ClrIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI拉低 +#define SPI0_MOSI_PORTx GpioPortB //MOSIIO鍙 +#define SPI0_MOSI_PINx GpioPin5 //閰嶇疆PA07涓篗OSI +#define SET_SPI0_MOSI() Gpio_SetIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI鎷夐珮 +#define CLR_SPI0_MOSI() Gpio_ClrIO(SPI0_MOSI_PORTx, SPI0_MOSI_PINx) //MOSI鎷変綆 #define SPI0_MOSI_AF GpioAf1 //< SPI1 -#define SPI1_NSS_PORTx GpioPortB //NSSIO口 -#define SPI1_NSS_PINx GpioPin12 //配置PB12为NSS -#define SET_SPI1_NSS() Gpio_SetIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS拉高 -#define CLR_SPI1_NSS() Gpio_ClrIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS拉低 +#define SPI1_NSS_PORTx GpioPortB //NSSIO鍙 +#define SPI1_NSS_PINx GpioPin12 //閰嶇疆PB12涓篘SS +#define SET_SPI1_NSS() Gpio_SetIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS鎷夐珮 +#define CLR_SPI1_NSS() Gpio_ClrIO(SPI1_NSS_PORTx, SPI1_NSS_PINx) //NSS鎷変綆 #define SPI1_NSS_AF GpioAf1 -#define SPI1_SCK_PORTx GpioPortB //SCKIO口 -#define SPI1_SCK_PINx GpioPin3 //配置PB13为SCK -#define SET_SPI1_SCK() Gpio_SetIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK拉高 -#define CLR_SPI1_SCK() Gpio_ClrIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK拉低 +#define SPI1_SCK_PORTx GpioPortB //SCKIO鍙 +#define SPI1_SCK_PINx GpioPin3 //閰嶇疆PB13涓篠CK +#define SET_SPI1_SCK() Gpio_SetIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK鎷夐珮 +#define CLR_SPI1_SCK() Gpio_ClrIO(SPI1_SCK_PORTx, SPI1_SCK_PINx) //SCK鎷変綆 #define SPI1_SCK_AF GpioAf1 -#define SPI1_MISO_PORTx GpioPortB //MISOIO口 -#define SPI1_MISO_PINx GpioPin4 //配置PB14为MISO -#define SET_SPI1_MISO() Gpio_SetIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO拉高 -#define CLR_SPI1_MISO() Gpio_ClrIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO拉低 +#define SPI1_MISO_PORTx GpioPortB //MISOIO鍙 +#define SPI1_MISO_PINx GpioPin4 //閰嶇疆PB14涓篗ISO +#define SET_SPI1_MISO() Gpio_SetIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO鎷夐珮 +#define CLR_SPI1_MISO() Gpio_ClrIO(SPI1_MISO_PORTx, SPI1_MISO_PINx) //MISO鎷変綆 #define SPI1_MISO_AF GpioAf1 -#define SPI1_MOSI_PORTx GpioPortB //MOSIIO口 -#define SPI1_MOSI_PINx GpioPin5 //配置PB15为MOSI -#define SET_SPI1_MOSI() Gpio_SetIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI拉高 -#define CLR_SPI1_MOSI() Gpio_ClrIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI拉低 +#define SPI1_MOSI_PORTx GpioPortB //MOSIIO鍙 +#define SPI1_MOSI_PINx GpioPin5 //閰嶇疆PB15涓篗OSI +#define SET_SPI1_MOSI() Gpio_SetIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI鎷夐珮 +#define CLR_SPI1_MOSI() Gpio_ClrIO(SPI1_MOSI_PORTx, SPI1_MOSI_PINx) //MOSI鎷変綆 #define SPI1_MOSI_AF GpioAf1 //< I2C0 -#define I2C0_SCL_PORTx GpioPortF //SCL的GPIO通道 -#define I2C0_SCL_PINx GpioPin1 //SCL的通道位 +#define I2C0_SCL_PORTx GpioPortF //SCL鐨凣PIO閫氶亾 +#define I2C0_SCL_PINx GpioPin1 //SCL鐨勯氶亾浣 #define I2C0_SCL_AF GpioAf1 #define SET_I2C0_SCL() Gpio_SetIO(I2C0_SCL_PORTx, I2C0_SCL_PINx) #define CLR_I2C0_SCL() Gpio_ClrIO(I2C0_SCL_PORTx, I2C0_SCL_PINx) -#define I2C0_SDA_PORTx GpioPortF //SDA的GPIO通道 -#define I2C0_SDA_PINx GpioPin0 //SDA的通道位 +#define I2C0_SDA_PORTx GpioPortF //SDA鐨凣PIO閫氶亾 +#define I2C0_SDA_PINx GpioPin0 //SDA鐨勯氶亾浣 #define I2C0_SDA_AF GpioAf1 #define SET_I2C0_SDA() Gpio_SetIO(I2C0_SDA_PORTx, I2C0_SDA_PINx) #define CLR_I2C0_SDA() Gpio_ClrIO(I2C0_SDA_PORTx, I2C0_SDA_PINx) //< I2C1 -#define I2C1_SCL_PORTx GpioPortA //SCL的GPIO通道 -#define I2C1_SCL_PINx GpioPin11 //SCL的通道位 +#define I2C1_SCL_PORTx GpioPortA //SCL鐨凣PIO閫氶亾 +#define I2C1_SCL_PINx GpioPin11 //SCL鐨勯氶亾浣 #define I2C1_SCL_AF GpioAf3 #define SET_I2C1_SCL() Gpio_SetIO(I2C1_SCL_PORTx, I2C1_SCL_PINx) #define CLR_I2C1_SCL() Gpio_ClrIO(I2C1_SCL_PORTx, I2C1_SCL_PINx) -#define I2C1_SDA_PORTx GpioPortA //SDA的GPIO通道 -#define I2C1_SDA_PINx GpioPin12 //SDA的通道位 +#define I2C1_SDA_PORTx GpioPortA //SDA鐨凣PIO閫氶亾 +#define I2C1_SDA_PINx GpioPin12 //SDA鐨勯氶亾浣 #define I2C1_SDA_AF GpioAf3 #define SET_I2C1_SDA() Gpio_SetIO(I2C1_SDA_PORTx, I2C1_SDA_PINx) #define CLR_I2C1_SDA() Gpio_ClrIO(I2C1_SDA_PORTx, I2C1_SDA_PINx) //<<---------------------------- 485 -------------------------------->> //< LPUart0 -#define RS485_CTRL_PORTx GpioPortB //RS485_1通信控制 -#define RS485_CTRL_PINx GpioPin1 //配置PB02为RS485_1_CTRL -#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL拉高发送 -#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL拉低接收 +#define RS485_CTRL_PORTx GpioPortB //RS485_1閫氫俊鎺у埗 +#define RS485_CTRL_PINx GpioPin1 //閰嶇疆PB02涓篟S485_1_CTRL +#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL鎷夐珮鍙戦 +#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORTx, RS485_CTRL_PINx) //RS485_1_CTRL鎷変綆鎺ユ敹 //<<---------------------------- LED -------------------------------->> //< LED_State -#define LED_STATE_PORTx GpioPortF //状态指示灯IO通道 -#define LED_STATE_PINx GpioPin7 //状态指示灯脚位 -#define LED_ON() Gpio_SetIO(LED_STATE_PORTx, LED_STATE_PINx);//状态指示灯亮 -#define LED_OFF() Gpio_ClrIO(LED_STATE_PORTx, LED_STATE_PINx);//状态指示灯灭 +#define LED_STATE_PORTx GpioPortF //鐘舵佹寚绀虹伅IO閫氶亾 +#define LED_STATE_PINx GpioPin7 //鐘舵佹寚绀虹伅鑴氫綅 +#define LED_ON() Gpio_SetIO(LED_STATE_PORTx, LED_STATE_PINx);//鐘舵佹寚绀虹伅浜 +#define LED_OFF() Gpio_ClrIO(LED_STATE_PORTx, LED_STATE_PINx);//鐘舵佹寚绀虹伅鐏 //<<---------------------------- LORA --> SPI0 -------------------------------->> //< LORA --> DIO0 -#define LORA_DIO0_PORTx GpioPortB //LORA_DIO0口 -#define LORA_DIO0_PINx GpioPin7 //配置PA01为DIO0 -#define GET_LORA_DIO0() Gpio_GetInputIO(LORA_DIO0_PORTx, LORA_DIO0_PINx) //获取LORA_DIO0电平状态 +#define LORA_DIO0_PORTx GpioPortB //LORA_DIO0鍙 +#define LORA_DIO0_PINx GpioPin7 //閰嶇疆PA01涓篋IO0 +#define GET_LORA_DIO0() Gpio_GetInputIO(LORA_DIO0_PORTx, LORA_DIO0_PINx) //鑾峰彇LORA_DIO0鐢靛钩鐘舵 //< LORA --> DIO1 -#define LORA_DIO1_PORTx GpioPortB //LORA_DIO0口 -#define LORA_DIO1_PINx GpioPin0 //配置PA01为DIO0 -#define GET_LORA_DIO1() Gpio_GetInputIO(LORA_DIO1_PORTx, LORA_DIO1_PINx) //获取LORA_DIO0电平状态 +#define LORA_DIO1_PORTx GpioPortB //LORA_DIO0鍙 +#define LORA_DIO1_PINx GpioPin0 //閰嶇疆PA01涓篋IO0 +#define GET_LORA_DIO1() Gpio_GetInputIO(LORA_DIO1_PORTx, LORA_DIO1_PINx) //鑾峰彇LORA_DIO0鐢靛钩鐘舵 //< LORA --> RST -#define LORA_RST_PORTx GpioPortB //LORA_RST口 -#define LORA_RST_PINx GpioPin6 //配置PA00为RST -#define SET_LORA_RST() Gpio_SetIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA复位脚拉高 -#define CLR_LORA_RST() Gpio_ClrIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA复位脚拉低 +#define LORA_RST_PORTx GpioPortB //LORA_RST鍙 +#define LORA_RST_PINx GpioPin6 //閰嶇疆PA00涓篟ST +#define SET_LORA_RST() Gpio_SetIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA澶嶄綅鑴氭媺楂 +#define CLR_LORA_RST() Gpio_ClrIO(LORA_RST_PORTx, LORA_RST_PINx) //LORA澶嶄綅鑴氭媺浣 //<<---------------------------- LSM6DSLTR --> I2C0 -------------------------------->> //< ACC_INT1 -#define LSM6DSLTR_INT1_PORTx GpioPortC //LSM6DSLTR中断1IO通道 -#define LSM6DSLTR_INT1_PINx GpioPin15 //配置PB01为ACC_INT1 -#define GET_LSM6DSLTR_INT1() Gpio_GetInputIO(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx) //获取ACC_INT1电平状态 +#define LSM6DSLTR_INT1_PORTx GpioPortC //LSM6DSLTR涓柇1IO閫氶亾 +#define LSM6DSLTR_INT1_PINx GpioPin15 //閰嶇疆PB01涓篈CC_INT1 +#define GET_LSM6DSLTR_INT1() Gpio_GetInputIO(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx) //鑾峰彇ACC_INT1鐢靛钩鐘舵 //< ACC_INT2 -#define LSM6DSLTR_INT2_PORTx GpioPortC //LSM6DSLTR中断1IO通道 -#define LSM6DSLTR_INT2_PINx GpioPin13 //配置PA08为ACC_INT2 -#define GET_LSM6DSLTR_INT2() Gpio_GetInputIO(LSM6DSLTR_INT2_PORTx, LSM6DSLTR_INT2_PINx) //获取ACC_INT2电平状态 +#define LSM6DSLTR_INT2_PORTx GpioPortC //LSM6DSLTR涓柇1IO閫氶亾 +#define LSM6DSLTR_INT2_PINx GpioPin13 //閰嶇疆PA08涓篈CC_INT2 +#define GET_LSM6DSLTR_INT2() Gpio_GetInputIO(LSM6DSLTR_INT2_PORTx, LSM6DSLTR_INT2_PINx) //鑾峰彇ACC_INT2鐢靛钩鐘舵 //<<---------------------------- MMC5983MA --> I2C0 -------------------------------->> //< MMC0_INT -#define MMC5983MA_INT_PORTx GpioPortC //MMC5983MA中断IO通道 -#define MMC5983MA_INT_PINx GpioPin14 //配置PB00为MMC_INT -#define GET_MMC5983MA_INT() Gpio_GetInputIO(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx) //获取ACC_INT2电平状态 +#define MMC5983MA_INT_PORTx GpioPortC //MMC5983MA涓柇IO閫氶亾 +#define MMC5983MA_INT_PINx GpioPin14 //閰嶇疆PB00涓篗MC_INT +#define GET_MMC5983MA_INT() Gpio_GetInputIO(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx) //鑾峰彇ACC_INT2鐢靛钩鐘舵 //<<---------------------------- LASER -------------------------------->> //< LASER1 #define LASER1_ON_OFF_PORTx GpioPortB #define LASER1_ON_OFF_PINx GpioPin14 -#define LASER1_ON() Gpio_SetIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA复位脚拉高 -#define LASER1_OFF() Gpio_ClrIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA复位脚拉低 +#define LASER1_ON() Gpio_SetIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺楂 +#define LASER1_OFF() Gpio_ClrIO(LASER1_ON_OFF_PORTx, LASER1_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺浣 //< LASER2 #define LASER2_ON_OFF_PORTx GpioPortB #define LASER2_ON_OFF_PINx GpioPin13 -#define LASER2_ON() Gpio_SetIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA复位脚拉高 -#define LASER2_OFF() Gpio_ClrIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA复位脚拉低 +#define LASER2_ON() Gpio_SetIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺楂 +#define LASER2_OFF() Gpio_ClrIO(LASER2_ON_OFF_PORTx, LASER2_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺浣 //< LASER3 #define LASER3_ON_OFF_PORTx GpioPortB #define LASER3_ON_OFF_PINx GpioPin12 -#define LASER3_ON() Gpio_SetIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA复位脚拉高 -#define LASER3_OFF() Gpio_ClrIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA复位脚拉低 +#define LASER3_ON() Gpio_SetIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺楂 +#define LASER3_OFF() Gpio_ClrIO(LASER3_ON_OFF_PORTx, LASER3_ON_OFF_PINx) //LORA澶嶄綅鑴氭媺浣 //<<------------------------------ ADC ---------------------------------->> #define AD_ON_OFF_PORTx GpioPortA #define AD_ON_OFF_PINx GpioPin3 -#define AD_ON() Gpio_SetIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) //LORA复位脚拉高 -#define AD_OFF() Gpio_ClrIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) //LORA复位脚拉低 +#define AD_ON() Gpio_SetIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) +#define AD_OFF() Gpio_ClrIO(AD_ON_OFF_PORTx, AD_ON_OFF_PINx) #define VBAT_PORTx GpioPortA #define VBAT_PINx GpioPin4 -#define VBAT_ADC_PORTx AdcExInputCH4//采样通道 -#define VBAT_CAL 3.5 //电池电压校准 +#define VBAT_ADC_PORTx AdcExInputCH4//閲囨牱閫氶亾 +#define VBAT_CAL 3.5 //鐢垫睜鐢靛帇鏍″噯 -//< 电池电压 +//< 鐢垫睜鐢靛帇 extern float VBAT_8V4; extern uint8_t VBAT_Percentage; @@ -215,23 +215,23 @@ typedef struct { uint32_t PackageCnt; uint32_t AppSize; uint32_t Crc32Check; - uint32_t FirstRunFlag;//第一次运行 - uint8_t DevMac[6];//设备MAC - uint32_t LoraFreq;//Lora频率 + uint32_t FirstRunFlag;//绗竴娆¤繍琛 + uint8_t DevMac[6];//璁惧MAC + uint32_t LoraFreq;//Lora棰戠巼 }BootPara_t, *BootPara; typedef struct { - uint16_t CollectTime; //数据采集时间间隔,设置范围30*N秒,1<=N<=240,(默认300秒,N=10) - uint16_t ReportInterval; //上报时间间隔,设置范围,30*N秒,10<=N<=1440(默认1200秒,N=40) - uint8_t ERInterval; //紧急上报时间间隔,设置范围,30*N秒,2<=N<=10(默认120秒,N=4) - uint8_t ERTime; //紧急上报时长,设置范围,30*N秒,20<=N<=240(默认1200秒,N=40) - uint32_t TimeStamp; //网关返回RTC时间戳 -}__attribute__((packed))LayoutPara_t,*LayoutPara;//上位机下发的配置参数 + uint16_t CollectTime; //鏁版嵁閲囬泦鏃堕棿闂撮殧,璁剧疆鑼冨洿30*N绉,1<=N<=240锛(榛樿300绉,N=10) + uint16_t ReportInterval; //涓婃姤鏃堕棿闂撮殧锛岃缃寖鍥,30*N绉,10<=N<=1440锛堥粯璁1200绉,N=40锛 + uint8_t ERInterval; //绱фヤ笂鎶ユ椂闂撮棿闅,璁剧疆鑼冨洿,30*N绉,2<=N<=10锛堥粯璁120绉,N=4锛 + uint8_t ERTime; //绱фヤ笂鎶ユ椂闀,璁剧疆鑼冨洿,30*N绉,20<=N<=240锛堥粯璁1200绉,N=40锛 + uint32_t TimeStamp; //缃戝叧杩斿洖RTC鏃堕棿鎴 +}__attribute__((packed))LayoutPara_t,*LayoutPara;//涓婁綅鏈轰笅鍙戠殑閰嶇疆鍙傛暟 typedef struct { - int16_t PitchZero; //俯仰角零点 - int16_t RollZero; //横滚角零点 - int16_t YawZero; //偏航角零点 + int16_t PitchZero; //淇话瑙掗浂鐐 + int16_t RollZero; //妯粴瑙掗浂鐐 + int16_t YawZero; //鍋忚埅瑙掗浂鐐 }__attribute__ ((packed))CalibratePara_t, *CalibratePara; typedef struct { @@ -246,9 +246,9 @@ typedef struct { }__attribute__ ((packed))LoraPara_t, *pLoraPara; typedef struct { - bool Enable; //串口使能 - bool UpgradeEnable;//升级功能使能 - uint32_t Addr; //本机485地址 + bool Enable; //涓插彛浣胯兘 + bool UpgradeEnable;//鍗囩骇鍔熻兘浣胯兘 + uint32_t Addr; //鏈満485鍦板潃 uint32_t BaudRate; }__attribute__((packed))RS485Para_t, *RS485Para; @@ -258,7 +258,7 @@ typedef struct { CalibratePara_t CaliPara; RS485Para_t Rs485Ch1; RS485Para_t Rs485Ch2; - uint32_t FactoryFlag;//出厂标志位 + uint32_t FactoryFlag;//鍑哄巶鏍囧織浣 LoraPara_t Lora; }AppPara_T, *pAppPara; //#define APP_PARA_ADDRESS (0x0001FC00) diff --git a/source/inc/main.h b/source/inc/main.h index fc2176d..f77541e 100644 --- a/source/inc/main.h +++ b/source/inc/main.h @@ -1,12 +1,12 @@ -#ifndef __MAIN_H +锘#ifndef __MAIN_H #define __MAIN_H #include "bsp.h" #include "UartDebug.h" #include "Update.h" #include "Imu.h" -#define SOFTWARE_VERSION 12 //软件版本 -#define HARDWARE_VERSION 11 //硬件版本 +#define SOFTWARE_VERSION 12 //杞欢鐗堟湰 +#define HARDWARE_VERSION 11 //纭欢鐗堟湰 #define MAIN_DBG_LOG(...) { if(MainDispEn) DBG_LOG(__VA_ARGS__);} #define DATA_DBG_LOG(...) { if(DataDispEn) DBG_LOG(__VA_ARGS__);} @@ -17,34 +17,34 @@ #define Z 2 #define XYZ 3 -#define SYSTEM_TIMING_LOGIN (86400 / 30) //系统定时注册时间(一天86400秒) -#define ERR_TIMING_LOGIN (1800 / 30) //注册错误重新注册时间(半个小时1800秒) +#define SYSTEM_TIMING_LOGIN (86400 / 30) //绯荤粺瀹氭椂娉ㄥ唽鏃堕棿(涓澶86400绉) +#define ERR_TIMING_LOGIN (1800 / 30) //娉ㄥ唽閿欒閲嶆柊娉ㄥ唽鏃堕棿(鍗婁釜灏忔椂1800绉) #define TEST_TIME (60*60*1000) -#define ERINTERVAL_VPT 10 //紧急上报阈值,单位0.1° -#define ERINTERVAL_VPT 10 //紧急上报阈值,单位0.1° +#define ERINTERVAL_VPT 10 //绱фヤ笂鎶ラ槇鍊硷紝鍗曚綅0.1掳 +#define ERINTERVAL_VPT 10 //绱фヤ笂鎶ラ槇鍊硷紝鍗曚綅0.1掳 -typedef struct {//传感器原始数据 +typedef struct {//浼犳劅鍣ㄥ師濮嬫暟鎹 float acce[XYZ]; float gy[XYZ]; float mag[XYZ]; -}__attribute__ ((packed))SensorData_T,*SensorDp;//传感器数据 +}__attribute__ ((packed))SensorData_T,*SensorDp;//浼犳劅鍣ㄦ暟鎹 -typedef struct {//转换的数据 - int16_t Pitch; //俯仰角偏斜 (范围±900)单位0.1° - int16_t Roll; //横滚角偏斜 (范围±900)单位0.1° - int16_t Yaw; //偏航角偏斜 (范围0~3600)单位0.1° -// int16_t Temp; //温度值 -// int32_t AD; //AD值 +typedef struct {//杞崲鐨勬暟鎹 + int16_t Pitch; //淇话瑙掑亸鏂 锛堣寖鍥绰900锛夊崟浣0.1掳 + int16_t Roll; //妯粴瑙掑亸鏂 锛堣寖鍥绰900锛夊崟浣0.1掳 + int16_t Yaw; //鍋忚埅瑙掑亸鏂 锛堣寖鍥0~3600锛夊崟浣0.1掳 +// int16_t Temp; //娓╁害鍊 +// int32_t AD; //AD鍊 }__attribute__ ((packed))ConvertedData_T, *ConvertedDp; -typedef struct {// 姿态角数据 +typedef struct {// 濮挎佽鏁版嵁 Rad_T Rad; Deg_T Deg; }__attribute__ ((packed))AHRSData_T,*AHRSDp; -/*主程序状态机*/ +/*涓荤▼搴忕姸鎬佹満*/ typedef enum { APP_STATUS_IDLE, APP_STATUS_SLEEP, @@ -55,7 +55,7 @@ typedef enum { APP_STATUS_WAIT_UPLOAD, }AppStatus_m; -/*数据读取状态机*/ +/*鏁版嵁璇诲彇鐘舵佹満*/ typedef enum { READDATA_STATUS_IDLE, READDATA_STATUS_UPDAING, @@ -64,8 +64,8 @@ typedef enum { }ReadDataStatus_m; typedef struct { - AppStatus_m Status;//状态 - ReadDataStatus_m RDStatus;//读取数据状态 + AppStatus_m Status;//鐘舵 + ReadDataStatus_m RDStatus;//璇诲彇鏁版嵁鐘舵 uint32_t TD1mSDelayCnt; uint8_t FeedDogDlyCnt; @@ -77,30 +77,32 @@ typedef struct { AHRSData_T AHRSData; ConvertedData_T ConvertedData; - uint32_t RepeLoginCount; //24h重复注册计数 - uint8_t Login30MinCount; //注册30分定时计数 - uint8_t Login2Min30SCount; //注册100ms~2分+30s定时计数 - bool Login_RTC; //注册30分定时器启动标志位 - bool Login_LPTimer0; //注册100ms~2分+30s定时器启动标志位 - bool LoginFlag; //注册标志位 + uint32_t RepeLoginCount; //24h閲嶅娉ㄥ唽璁℃暟 + uint8_t Login30MinCount; //娉ㄥ唽30鍒嗗畾鏃惰鏁 + uint8_t Login2Min30SCount; //娉ㄥ唽100ms~2鍒+30s瀹氭椂璁℃暟 + bool Login_RTC; //娉ㄥ唽30鍒嗗畾鏃跺櫒鍚姩鏍囧織浣 + bool Login_LPTimer0; //娉ㄥ唽100ms~2鍒+30s瀹氭椂鍣ㄥ惎鍔ㄦ爣蹇椾綅 + bool LoginFlag; //娉ㄥ唽鏍囧織浣 - uint16_t Coll_N; //数据采集时间计数 - uint16_t Repor_N; //上报时间计数 - uint16_t ERInterval_N; //紧急上报时间间隔计数 - uint8_t ERTime_N; //紧急上报时间计数 - bool ERFlag; //紧急上报标志位 + uint16_t Coll_N; //鏁版嵁閲囬泦鏃堕棿璁℃暟 + uint16_t Repor_N; //涓婃姤鏃堕棿璁℃暟 + uint16_t ERInterval_N; //绱фヤ笂鎶ユ椂闂撮棿闅旇鏁 + uint8_t ERTime_N; //绱фヤ笂鎶ユ椂闂磋鏁 + bool ERFlag; //绱фヤ笂鎶ユ爣蹇椾綅 - bool UploadFlag; //上传数据标志位 - uint8_t Upload45S10SCount; //上传数据超时计数 - bool Upload_LPTimer0; //上传100~10000ms+45秒定时器启动标志位 + bool UploadFlag; //涓婁紶鏁版嵁鏍囧織浣 + uint8_t Upload45S10SCount; //涓婁紶鏁版嵁瓒呮椂璁℃暟 + bool Upload_LPTimer0; //涓婁紶100~10000ms+45绉掑畾鏃跺櫒鍚姩鏍囧織浣 bool MagRead_EndFlag; bool AccRead_EndFlag; - bool UpdateOk; //数据更新标志位 + bool UpdateOk; //鏁版嵁鏇存柊鏍囧織浣 - bool CaliFlag; //标校标志位 + bool CaliFlag; //鏍囨牎鏍囧織浣 - uint16_t Nonce; //随机数 + uint16_t Nonce; //闅忔満鏁 + bool AttTestMode; //濮挎佹祴璇曟ā寮忔爣蹇椾綅 + uint32_t AttTestCnt; //濮挎佹祴璇曟墦鍗拌鏁(ms) }AppDetect_t; extern AppDetect_t App; diff --git a/source/src/Algorithm.c b/source/src/Algorithm.c index 01ac291..d3c239f 100644 --- a/source/src/Algorithm.c +++ b/source/src/Algorithm.c @@ -1,50 +1,50 @@ -#include "bsp.h" +锘#include "bsp.h" #include "Algorithm.h" #include "UartDebug.h" /***************************************************************************************** -* 函数名称: check_peaks_valleys_ratio -* 功能描述: 检查数据的峰值是否大于0,谷值是否小于0(忽略0值) -* 参 数: data, 数据 - length, 数据长度 -* 返 回 值: 结果返回峰值谷值检查结果结构体 +* 鍑芥暟鍚嶇О: check_peaks_valleys_ratio +* 鍔熻兘鎻忚堪: 妫鏌ユ暟鎹殑宄板兼槸鍚﹀ぇ浜0锛岃胺鍊兼槸鍚﹀皬浜0锛堝拷鐣0鍊硷級 +* 鍙 鏁: data, 鏁版嵁 + length, 鏁版嵁闀垮害 +* 杩 鍥 鍊: 缁撴灉杩斿洖宄板艰胺鍊兼鏌ョ粨鏋滅粨鏋勪綋 *****************************************************************************************/ PeakValleyCheck check_peaks_valleys(int data[], int length) { PeakValleyCheck result = {true, true, 0, 0}; - // 如果数据长度小于3,无法形成有效的峰值/谷值 + // 濡傛灉鏁版嵁闀垮害灏忎簬3锛屾棤娉曞舰鎴愭湁鏁堢殑宄板/璋峰 if (length < 3) { return result; } int i = 0; - // 跳过开头的0值 + // 璺宠繃寮澶寸殑0鍊 while (i < length && data[i] == 0) { i++; } - // 遍历数据点 + // 閬嶅巻鏁版嵁鐐 while (i < length) { - // 1. 寻找下一个非零点作为起点 + // 1. 瀵绘壘涓嬩竴涓潪闆剁偣浣滀负璧风偣 int start = i; while (i < length && data[i] == 0) { i++; } if (i >= length) break; - // 2. 寻找当前非零段的结束点 + // 2. 瀵绘壘褰撳墠闈為浂娈电殑缁撴潫鐐 int end = i; while (end < length && data[end] != 0) { end++; } - end--; // 指向最后一个非零点 + end--; // 鎸囧悜鏈鍚庝竴涓潪闆剁偣 - // 3. 在当前非零段中检测峰值和谷值 + // 3. 鍦ㄥ綋鍓嶉潪闆舵涓娴嬪嘲鍊煎拰璋峰 for (int j = i; j <= end; j++) { - // 跳过边界点 + // 璺宠繃杈圭晫鐐 if (j == i || j == end) continue; - // 检查是否为峰值(大于左右相邻的非零点) + // 妫鏌ユ槸鍚︿负宄板硷紙澶т簬宸﹀彸鐩搁偦鐨勯潪闆剁偣锛 if (data[j] > data[j-1] && data[j] > data[j+1]) { result.peak_count++; if (data[j] <= 0) { @@ -52,7 +52,7 @@ PeakValleyCheck check_peaks_valleys(int data[], int length) { } } - // 检查是否为谷值(小于左右相邻的非零点) + // 妫鏌ユ槸鍚︿负璋峰硷紙灏忎簬宸﹀彸鐩搁偦鐨勯潪闆剁偣锛 if (data[j] < data[j-1] && data[j] < data[j+1]) { result.valley_count++; if (data[j] >= 0) { @@ -61,33 +61,33 @@ PeakValleyCheck check_peaks_valleys(int data[], int length) { } } - // 移动到下一段 + // 绉诲姩鍒颁笅涓娈 i = end + 1; } return result; } /***************************************************************************************** -* 函数名称: analyze_trend -* 功能描述: 趋势分析函数 -* 参 数: data, 数据 - length, 数据长度 -* 返 回 值: 结果返回趋势分析结构体 +* 鍑芥暟鍚嶇О: analyze_trend +* 鍔熻兘鎻忚堪: 瓒嬪娍鍒嗘瀽鍑芥暟 +* 鍙 鏁: data, 鏁版嵁 + length, 鏁版嵁闀垮害 +* 杩 鍥 鍊: 缁撴灉杩斿洖瓒嬪娍鍒嗘瀽缁撴瀯浣 *****************************************************************************************/ TrendResult analyze_trend(int data[], int length) { TrendResult result = {0}; #if 1 - // 0. 检查有效数据长度 + // 0. 妫鏌ユ湁鏁堟暟鎹暱搴 if (length < 2) { DBG_LOG("Data deficient\r\n"); return result; } - // 1. 计算线性回归斜率 + // 1. 璁$畻绾挎у洖褰掓枩鐜 double sum_x = 0, sum_y = 0, sum_xy = 0, sum_x2 = 0; for (int i = 0; i < length; i++) { - double x = i; // 时间序列 (0,1,2,...) + double x = i; // 鏃堕棿搴忓垪 (0,1,2,...) double y = data[i]; sum_x += x; sum_y += y; @@ -98,15 +98,15 @@ TrendResult analyze_trend(int data[], int length) { double numerator = length * sum_xy - sum_x * sum_y; double denominator = length * sum_x2 - sum_x * sum_x; - // 处理分母为零的情况 + // 澶勭悊鍒嗘瘝涓洪浂鐨勬儏鍐 if (fabs(denominator) > 1e-10) { result.slope = numerator / denominator; } #endif #if 0 - // 2. 计算振荡特征(差分符号变化次数) + // 2. 璁$畻鎸崱鐗瑰緛锛堝樊鍒嗙鍙峰彉鍖栨鏁帮級 int sign_changes = 0; - int prev_sign = 0; // 0=未初始化, 1=正, -1=负 + int prev_sign = 0; // 0=鏈垵濮嬪寲, 1=姝, -1=璐 for (int i = 1; i < length; i++) { int diff = data[i] - data[i-1]; @@ -122,66 +122,66 @@ TrendResult analyze_trend(int data[], int length) { result.sign_changes = sign_changes; #endif #if 0 - // 3. 动态计算阈值(基于数据长度) - int oscillation_threshold = (int)(0.4 * (length - 1)); // 40%的变化率 - double slope_threshold = 0.05 * (length / 20.0); // 长度标准化 + // 3. 鍔ㄦ佽绠楅槇鍊硷紙鍩轰簬鏁版嵁闀垮害锛 + int oscillation_threshold = (int)(0.4 * (length - 1)); // 40%鐨勫彉鍖栫巼 + double slope_threshold = 0.05 * (length / 20.0); // 闀垮害鏍囧噯鍖 #endif #if 0 - // 4. 趋势判断 + // 4. 瓒嬪娍鍒ゆ柇 if (sign_changes >= oscillation_threshold) { - //DBG_LOG("Oscillating trend\r\n");//振荡趋势 + //DBG_LOG("Oscillating trend\r\n");//鎸崱瓒嬪娍 result.trend_type = 0; } else if (fabs(result.slope) < slope_threshold) { - //DBG_LOG("Smooth trend\r\n");//平稳趋势 + //DBG_LOG("Smooth trend\r\n");//骞崇ǔ瓒嬪娍 result.trend_type = 1; } else if (result.slope > 0) { - //DBG_LOG("Up trend\r\n");//上升趋势 + //DBG_LOG("Up trend\r\n");//涓婂崌瓒嬪娍 result.trend_type = 2; } else { - //DBG_LOG("Down trend\r\n");//下降趋势 + //DBG_LOG("Down trend\r\n");//涓嬮檷瓒嬪娍 result.trend_type = 3; } #endif #if 0 - // 5. 陡峭判断 + // 5. 闄″抄鍒ゆ柇 double abs_slope = fabs(result.slope); if (abs_slope > 0.8) { - //DBG_LOG("Steeply");//陡峭 + //DBG_LOG("Steeply");//闄″抄 result.sign_changes = 0; } else if (abs_slope > 0.3) { - //DBG_LOG("Obvious");//明显 + //DBG_LOG("Obvious");//鏄庢樉 result.sign_changes = 1; } else if (abs_slope > 0.1) { - //DBG_LOG("Mild");//温和 + //DBG_LOG("Mild");//娓╁拰 result.sign_changes = 2; } else { - //DBG_LOG("gentle");//平缓 + //DBG_LOG("gentle");//骞崇紦 result.sign_changes = 3; } #endif return result; } /***************************************************************************************** -* 函数名称: calculateAverage -* 功能描述: 计算平均值 -* 参 数: arr, 数据 - size, 数据长度 -* 返 回 值: 结果返回 long long 防溢出 +* 鍑芥暟鍚嶇О: calculateAverage +* 鍔熻兘鎻忚堪: 璁$畻骞冲潎鍊 +* 鍙 鏁: arr, 鏁版嵁 + size, 鏁版嵁闀垮害 +* 杩 鍥 鍊: 缁撴灉杩斿洖 long long 闃叉孩鍑 *****************************************************************************************/ float calculateAverage(int *arr, int size) { int sum = 0; for (int i = 0; i < size; i++) { - sum += arr[i]; // 累加数组中的每个元素 + sum += arr[i]; // 绱姞鏁扮粍涓殑姣忎釜鍏冪礌 } - return (float)sum / size; // 返回平均值 + return (float)sum / size; // 杩斿洖骞冲潎鍊 } /***************************************************************************************** -* 函数名称: slope -* 功能描述: 计算斜率 -* 参 数: x_data, x轴数据 - y_data, y轴数据 -* 返 回 值: 结果返回 long long 防溢出 +* 鍑芥暟鍚嶇О: slope +* 鍔熻兘鎻忚堪: 璁$畻鏂滅巼 +* 鍙 鏁: x_data, x杞存暟鎹 + y_data, y杞存暟鎹 +* 杩 鍥 鍊: 缁撴灉杩斿洖 long long 闃叉孩鍑 *****************************************************************************************/ double slope(int32_t *x_data, int32_t *y_data, int n) { @@ -196,30 +196,30 @@ double slope(int32_t *x_data, int32_t *y_data, int n) return sum_xy / sum_xx; } /***************************************************************************************** -* 函数名称: power -* 功能描述: 快速幂算法 -* 参 数: base, 滤波数据 - exponent, 滤波数据长度 -* 返 回 值: 结果返回 long long 防溢出 +* 鍑芥暟鍚嶇О: power +* 鍔熻兘鎻忚堪: 蹇熷箓绠楁硶 +* 鍙 鏁: base, 婊ゆ尝鏁版嵁 + exponent, 婊ゆ尝鏁版嵁闀垮害 +* 杩 鍥 鍊: 缁撴灉杩斿洖 long long 闃叉孩鍑 *****************************************************************************************/ long long power(int base, unsigned int exponent) { long long result = 1; while (exponent > 0) { if (exponent % 2 == 1) { - result *= base; // 指数为奇数时累乘 + result *= base; // 鎸囨暟涓哄鏁版椂绱箻 } - base *= base; // 底数平方 - exponent /= 2; // 指数折半 + base *= base; // 搴曟暟骞虫柟 + exponent /= 2; // 鎸囨暟鎶樺崐 } return result; } /***************************************************************************************** -* 函数名称: IntFilter_16t -* 功能描述: 16位数据中值滤波函数 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 - FilterCnt, 滤除的数据长度,必须为2的倍数 -* 返 回 值: 滤波后的16位数据 +* 鍑芥暟鍚嶇О: IntFilter_16t +* 鍔熻兘鎻忚堪: 16浣嶆暟鎹腑鍊兼护娉㈠嚱鏁 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 + FilterCnt, 婊ら櫎鐨勬暟鎹暱搴︼紝蹇呴』涓2鐨勫嶆暟 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑16浣嶆暟鎹 *****************************************************************************************/ int IntFilter_16t(int16_t *Data, uint8_t Cnt, uint8_t FilterCnt) { @@ -245,12 +245,12 @@ int IntFilter_16t(int16_t *Data, uint8_t Cnt, uint8_t FilterCnt) } /***************************************************************************************** -* 函数名称: IntFilter_32t -* 功能描述: 32位数据中值滤波函数 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 - FilterCnt, 滤除的数据长度,必须为2的倍数 -* 返 回 值: 滤波后的32位数据 +* 鍑芥暟鍚嶇О: IntFilter_32t +* 鍔熻兘鎻忚堪: 32浣嶆暟鎹腑鍊兼护娉㈠嚱鏁 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 + FilterCnt, 婊ら櫎鐨勬暟鎹暱搴︼紝蹇呴』涓2鐨勫嶆暟 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑32浣嶆暟鎹 *****************************************************************************************/ int IntFilter_32t(int32_t *Data, uint8_t Cnt, uint8_t FilterCnt) { @@ -275,12 +275,12 @@ int IntFilter_32t(int32_t *Data, uint8_t Cnt, uint8_t FilterCnt) return (sum / (Cnt - FilterCnt)); } /***************************************************************************************** -* 函数名称: IntFilter_u32t -* 功能描述: 32位无符号位数据中值滤波函数 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 - FilterCnt, 滤除的数据长度,必须为2的倍数 -* 返 回 值: 滤波后的32位数据 +* 鍑芥暟鍚嶇О: IntFilter_u32t +* 鍔熻兘鎻忚堪: 32浣嶆棤绗﹀彿浣嶆暟鎹腑鍊兼护娉㈠嚱鏁 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 + FilterCnt, 婊ら櫎鐨勬暟鎹暱搴︼紝蹇呴』涓2鐨勫嶆暟 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑32浣嶆暟鎹 *****************************************************************************************/ uint32_t IntFilter_u32t(uint32_t *Data, uint8_t Cnt, uint8_t FilterCnt) { @@ -305,12 +305,12 @@ uint32_t IntFilter_u32t(uint32_t *Data, uint8_t Cnt, uint8_t FilterCnt) return (sum / (Cnt - FilterCnt)); } /***************************************************************************************** -* 函数名称: IntFilter_Float -* 功能描述: 32位浮点数数据中值滤波函数 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 - FilterCnt, 滤除的数据长度,必须为2的倍数 -* 返 回 值: 滤波后的32位数据 +* 鍑芥暟鍚嶇О: IntFilter_Float +* 鍔熻兘鎻忚堪: 32浣嶆诞鐐规暟鏁版嵁涓兼护娉㈠嚱鏁 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 + FilterCnt, 婊ら櫎鐨勬暟鎹暱搴︼紝蹇呴』涓2鐨勫嶆暟 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑32浣嶆暟鎹 *****************************************************************************************/ float IntFilter_Float(float *Data, uint8_t Cnt, uint8_t FilterCnt) { @@ -335,11 +335,11 @@ float IntFilter_Float(float *Data, uint8_t Cnt, uint8_t FilterCnt) return (sum / (Cnt - FilterCnt)); } /***************************************************************************************** -* 函数名称: AverageFilter_u32t -* 功能描述: 32位数据均值滤波函数,去除了最大值和最小值 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 -* 返 回 值: 滤波后的32位数据 +* 鍑芥暟鍚嶇О: AverageFilter_u32t +* 鍔熻兘鎻忚堪: 32浣嶆暟鎹潎鍊兼护娉㈠嚱鏁,鍘婚櫎浜嗘渶澶у煎拰鏈灏忓 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑32浣嶆暟鎹 *****************************************************************************************/ uint32_t AverageFilter_u32t(uint32_t *Data, uint8_t Cnt) { @@ -360,7 +360,7 @@ uint32_t AverageFilter_u32t(uint32_t *Data, uint8_t Cnt) return sum / 2; } - for (uint8_t i = 0; i < Cnt; i++)//找出最大值 + for (uint8_t i = 0; i < Cnt; i++)//鎵惧嚭鏈澶у { if (Data[i] > max) { @@ -368,7 +368,7 @@ uint32_t AverageFilter_u32t(uint32_t *Data, uint8_t Cnt) } } - for (uint8_t i = 0; i < Cnt; i++)//找出最小值 + for (uint8_t i = 0; i < Cnt; i++)//鎵惧嚭鏈灏忓 { if (Data[i] < min) { @@ -376,7 +376,7 @@ uint32_t AverageFilter_u32t(uint32_t *Data, uint8_t Cnt) } } - for(int i = 0; i < Cnt; i++){//求和 + for(int i = 0; i < Cnt; i++){//姹傚拰 sum += Data[i]; } @@ -384,11 +384,11 @@ uint32_t AverageFilter_u32t(uint32_t *Data, uint8_t Cnt) } /***************************************************************************************** -* 函数名称: AverageFilter_32t -* 功能描述: 32位数据均值滤波函数,去除了最大值和最小值 -* 参 数: Data, 滤波数据 - Cnt, 滤波数据长度 -* 返 回 值: 滤波后的32位数据 +* 鍑芥暟鍚嶇О: AverageFilter_32t +* 鍔熻兘鎻忚堪: 32浣嶆暟鎹潎鍊兼护娉㈠嚱鏁,鍘婚櫎浜嗘渶澶у煎拰鏈灏忓 +* 鍙 鏁: Data, 婊ゆ尝鏁版嵁 + Cnt, 婊ゆ尝鏁版嵁闀垮害 +* 杩 鍥 鍊: 婊ゆ尝鍚庣殑32浣嶆暟鎹 *****************************************************************************************/ int AverageFilter_32t(int32_t *Data, uint8_t Cnt) { @@ -408,7 +408,7 @@ int AverageFilter_32t(int32_t *Data, uint8_t Cnt) return sum / 2; } - for (uint8_t i = 0; i < Cnt; i++)//找出最大值 + for (uint8_t i = 0; i < Cnt; i++)//鎵惧嚭鏈澶у { if (Data[i] > max) { @@ -416,7 +416,7 @@ int AverageFilter_32t(int32_t *Data, uint8_t Cnt) } } - for (uint8_t i = 0; i < Cnt; i++)//找出最小值 + for (uint8_t i = 0; i < Cnt; i++)//鎵惧嚭鏈灏忓 { if (Data[i] < min) { @@ -424,24 +424,24 @@ int AverageFilter_32t(int32_t *Data, uint8_t Cnt) } } - for(int i = 0; i < Cnt; i++){//求和 + for(int i = 0; i < Cnt; i++){//姹傚拰 sum += Data[i]; } return (sum - max - min) / (Cnt - 2); } /***************************************************************************************** -* 函数名称: Fitting_Polynomial -* 功能描述: 根据数组AD[], Actual[]列出的一组数据,用最小二乘法求它的拟合曲线,默认3阶 - 近似解析表达式为y = a3*x^3 + a2*x^2 + a1*x + a0; -* 参 数: AD, AD芯片采样值 - Actual, 实际标校值 - Cnt, 拟合数据个数 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: Fitting_Polynomial +* 鍔熻兘鎻忚堪: 鏍规嵁鏁扮粍AD[], Actual[]鍒楀嚭鐨勪竴缁勬暟鎹紝鐢ㄦ渶灏忎簩涔樻硶姹傚畠鐨勬嫙鍚堟洸绾,榛樿3闃 + 杩戜技瑙f瀽琛ㄨ揪寮忎负y = a3*x^3 + a2*x^2 + a1*x + a0; +* 鍙 鏁: AD, AD鑺墖閲囨牱鍊 + Actual, 瀹為檯鏍囨牎鍊 + Cnt, 鎷熷悎鏁版嵁涓暟 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void Fitting_Polynomial(double *AD, double *Actual, uint8_t Cnt) { - static const uint8_t rank_ = 3;//拟合阶数3 + static const uint8_t rank_ = 3;//鎷熷悎闃舵暟3 double atemp[2 * (rank_ + 1)], b[rank_ + 1], a[rank_ + 1][rank_ + 1]; int i, j, k; @@ -460,22 +460,22 @@ void Fitting_Polynomial(double *AD, double *Actual, uint8_t Cnt) atemp[0] = Cnt; - for(i = 0; i < rank_ + 1; i++){ //构建线性方程组系数矩阵,b[]不变 + for(i = 0; i < rank_ + 1; i++){ //鏋勫缓绾挎ф柟绋嬬粍绯绘暟鐭╅樀锛宐[]涓嶅彉 k = i; for(j = 0; j < rank_ + 1; j++) a[i][j] = atemp[k++]; } - //以下为高斯列主元消去法解线性方程组 - for(k = 0; k < rank_ + 1 - 1; k++){ //n - 1列 + //浠ヤ笅涓洪珮鏂垪涓诲厓娑堝幓娉曡В绾挎ф柟绋嬬粍 + for(k = 0; k < rank_ + 1 - 1; k++){ //n - 1鍒 int column = k; double mainelement = a[k][k]; - for(i = k; i < rank_ + 1; i++) //找主元素 + for(i = k; i < rank_ + 1; i++) //鎵句富鍏冪礌 if(fabs(a[i][k]) > mainelement){ mainelement = fabs(a[i][k]); column = i; } - for(j = k; j < rank_ + 1; j++){ //交换两行 + for(j = k; j < rank_ + 1; j++){ //浜ゆ崲涓よ double atemp = a[k][j]; a[k][j] = a[column][j]; a[column][j] = atemp; @@ -484,19 +484,19 @@ void Fitting_Polynomial(double *AD, double *Actual, uint8_t Cnt) b[k] = b[column]; b[column] = btemp; - for(i = k + 1; i < rank_ + 1; i++){ //消元过程 + for(i = k + 1; i < rank_ + 1; i++){ //娑堝厓杩囩▼ double Mik = a[i][k] / a[k][k]; for(j = k; j < rank_ + 1; j++) a[i][j] -= Mik * a[k][j]; b[i] -= Mik * b[k]; } } - b[rank_ + 1 - 1] /= a[rank_ + 1 - 1][rank_ + 1 - 1]; //回代过程 + b[rank_ + 1 - 1] /= a[rank_ + 1 - 1][rank_ + 1 - 1]; //鍥炰唬杩囩▼ for(i = rank_ + 1 - 2; i >= 0; i--){ double sum = 0; for(j = i + 1; j < rank_ + 1; j++) sum += a[i][j] * b[j]; b[i] = (b[i] - sum) / a[i][i]; - }//高斯列主元消去法结束 + }//楂樻柉鍒椾富鍏冩秷鍘绘硶缁撴潫 DBG_LOG("P(x) = %.16fx^3%+.16fx^2%+.16fx%+.16f\r\n", b[3], b[2], b[1], b[0]); @@ -507,46 +507,46 @@ void Fitting_Polynomial(double *AD, double *Actual, uint8_t Cnt) } /***************************************************************************************** -* 函数名称: get_K -* 功能描述: 斜率计算 -* 参 数: count,数据个数 数组行(列)的个数 数组的行列数目相等 - dataCol_X[count],数据的列数据 - dataRow_Y[count],数据的行数据 -* 返 回 值: k 斜率 +* 鍑芥暟鍚嶇О: get_K +* 鍔熻兘鎻忚堪: 鏂滅巼璁$畻 +* 鍙 鏁: count锛屾暟鎹釜鏁 鏁扮粍琛(鍒)鐨勪釜鏁 鏁扮粍鐨勮鍒楁暟鐩浉绛 + dataCol_X[count]锛屾暟鎹殑鍒楁暟鎹 + dataRow_Y[count]锛屾暟鎹殑琛屾暟鎹 +* 杩 鍥 鍊: k 鏂滅巼 *****************************************************************************************/ float get_K(uint8_t count , int32_t *dataCol_X, int32_t *dataRow_Y) { - float k = 0;//斜率 - float aveCol_X = 0;//列的平均值x - float aveRow_Y = 0;//行的平均值y - int32_t sum_XY = 0;//行列的总和xy - int32_t sumRow_Y = 0;//行的总和y - int32_t sumCol_X = 0;//列的总和x - int32_t sumCol_X2 = 0;//列的总和x^2 + float k = 0;//鏂滅巼 + float aveCol_X = 0;//鍒楃殑骞冲潎鍊紉 + float aveRow_Y = 0;//琛岀殑骞冲潎鍊紋 + int32_t sum_XY = 0;//琛屽垪鐨勬诲拰xy + int32_t sumRow_Y = 0;//琛岀殑鎬诲拰y + int32_t sumCol_X = 0;//鍒楃殑鎬诲拰x + int32_t sumCol_X2 = 0;//鍒楃殑鎬诲拰x^2 for(uint16_t i = 0 ; i < count ; i++) { - sumCol_X += dataCol_X[i];//求列x的总和 - sumRow_Y += dataRow_Y[i];//求行y的总和 - sumCol_X2 += dataCol_X[i] * dataCol_X[i];//求x^2的总和 - sum_XY += (dataCol_X[i] * dataRow_Y[i]);//求xy的总和 + sumCol_X += dataCol_X[i];//姹傚垪x鐨勬诲拰 + sumRow_Y += dataRow_Y[i];//姹傝y鐨勬诲拰 + sumCol_X2 += dataCol_X[i] * dataCol_X[i];//姹倄^2鐨勬诲拰 + sum_XY += (dataCol_X[i] * dataRow_Y[i]);//姹倄y鐨勬诲拰 } - aveCol_X = 1.0 * sumCol_X / count;//求平均值 + aveCol_X = 1.0 * sumCol_X / count;//姹傚钩鍧囧 aveRow_Y = 1.0 * sumRow_Y / count; - k = (sum_XY - aveCol_X * aveRow_Y * count) / //根据公式求斜率 + k = (sum_XY - aveCol_X * aveRow_Y * count) / //鏍规嵁鍏紡姹傛枩鐜 (sumCol_X2 - aveCol_X * aveCol_X * count); return k; } /***************************************************************************************** -* 函数名称: TrendAnalyse -* 功能描述: 判断数组中的值的总体趋势 -* 参 数: Data, +* 鍑芥暟鍚嶇О: TrendAnalyse +* 鍔熻兘鎻忚堪: 鍒ゆ柇鏁扮粍涓殑鍊肩殑鎬讳綋瓒嬪娍 +* 鍙 鏁: Data, Cnt, VPT, -* 返 回 值: true或false +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ int8_t TrendAnalyse(int32_t *Data, uint8_t Cnt, int32_t VPT) { @@ -571,26 +571,26 @@ int8_t TrendAnalyse(int32_t *Data, uint8_t Cnt, int32_t VPT) } } if(zero > (Cnt-(Cnt / 5))) - Trend = 0;//振荡趋势 + Trend = 0;//鎸崱瓒嬪娍 else if(plus > (Cnt-(Cnt/ 5))) - Trend = 1;//上升趋势 + Trend = 1;//涓婂崌瓒嬪娍 else if(minus > (Cnt-(Cnt/ 5))) - Trend = -1;//下降趋势 + Trend = -1;//涓嬮檷瓒嬪娍 - return Trend;//总趋势 + return Trend;//鎬昏秼鍔 } /***************************************************************************************** -* 函数名称: Waveform_Up -* 功能描述: 找出一段波形的波峰值 - dCnt, 波形数据长度 - pCnt, 要查找波峰数 - vlue, 返回的波峰值 -* 返 回 值: true或false +* 鍑芥暟鍚嶇О: Waveform_Up +* 鍔熻兘鎻忚堪: 鎵惧嚭涓娈垫尝褰㈢殑娉㈠嘲鍊 + dCnt, 娉㈠舰鏁版嵁闀垮害 + pCnt, 瑕佹煡鎵炬尝宄版暟 + vlue, 杩斿洖鐨勬尝宄板 +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ void Waveform_Up(int32_t *Data, uint8_t dCnt, uint8_t pCnt, int32_t *vlue) { uint8_t peak[pCnt]; - for(uint8_t i = 0, j = 0; i < dCnt; i++)//找出峰值地址 + for(uint8_t i = 0, j = 0; i < dCnt; i++)//鎵惧嚭宄板煎湴鍧 { if(Data[i] < Data[i + 1] && Data[i + 1] > Data[i + 2]) { @@ -605,17 +605,17 @@ void Waveform_Up(int32_t *Data, uint8_t dCnt, uint8_t pCnt, int32_t *vlue) } } /***************************************************************************************** -* 函数名称: Waveform_Down -* 功能描述: 找出一段波形的波谷值 - dCnt, 波形数据长度 - pCnt, 要查找波谷数 - vlue, 返回的波谷值 -* 返 回 值: true或false +* 鍑芥暟鍚嶇О: Waveform_Down +* 鍔熻兘鎻忚堪: 鎵惧嚭涓娈垫尝褰㈢殑娉㈣胺鍊 + dCnt, 娉㈠舰鏁版嵁闀垮害 + pCnt, 瑕佹煡鎵炬尝璋锋暟 + vlue, 杩斿洖鐨勬尝璋峰 +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ void Waveform_Down(int32_t *Data, uint8_t dCnt, uint8_t pCnt, int32_t *vlue) { uint8_t peak[pCnt]; - for(uint8_t i = 0, j = 0; i < dCnt; i++)//找出峰值地址 + for(uint8_t i = 0, j = 0; i < dCnt; i++)//鎵惧嚭宄板煎湴鍧 { if(Data[i] > Data[i + 1] && Data[i + 1] < Data[i + 2]) { @@ -630,12 +630,12 @@ void Waveform_Down(int32_t *Data, uint8_t dCnt, uint8_t pCnt, int32_t *vlue) } } /***************************************************************************************** -* 函数名称: count_most_greater -* 功能描述: 判断数组中的值是否大部分大于 target -* 参 数: arr, +* 鍑芥暟鍚嶇О: count_most_greater +* 鍔熻兘鎻忚堪: 鍒ゆ柇鏁扮粍涓殑鍊兼槸鍚﹀ぇ閮ㄥ垎澶т簬 target +* 鍙 鏁: arr, size, target, -* 返 回 值: true或false +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ bool count_most_greater(int32_t *arr, uint8_t size, int32_t target) { @@ -649,12 +649,12 @@ bool count_most_greater(int32_t *arr, uint8_t size, int32_t target) return true; } /***************************************************************************************** -* 函数名称: count_greater -* 功能描述: 判断数组中的值是否全部大于 target -* 参 数: arr, +* 鍑芥暟鍚嶇О: count_greater +* 鍔熻兘鎻忚堪: 鍒ゆ柇鏁扮粍涓殑鍊兼槸鍚﹀叏閮ㄥぇ浜 target +* 鍙 鏁: arr, size, target, -* 返 回 值: true或false +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ bool count_greater(int32_t *arr, uint8_t size, int32_t target) { @@ -665,12 +665,12 @@ bool count_greater(int32_t *arr, uint8_t size, int32_t target) return true; } /***************************************************************************************** -* 函数名称: count_smaller -* 功能描述: 判断数组中的值是否全部小于 target -* 参 数: arr, +* 鍑芥暟鍚嶇О: count_smaller +* 鍔熻兘鎻忚堪: 鍒ゆ柇鏁扮粍涓殑鍊兼槸鍚﹀叏閮ㄥ皬浜 target +* 鍙 鏁: arr, size, target, -* 返 回 值: true或false +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ bool count_smaller(int32_t *arr, uint8_t size, int32_t target) { @@ -682,12 +682,12 @@ bool count_smaller(int32_t *arr, uint8_t size, int32_t target) } /***************************************************************************************** -* 函数名称: CRC_Modbus -* 功能描述: CRC16计算函数 -* 参 数: wBase, 多项式 - Para,校验数据入口 - Data, 校验数据长度入口 -* 返 回 值: crc16校验值 +* 鍑芥暟鍚嶇О: CRC_Modbus +* 鍔熻兘鎻忚堪: CRC16璁$畻鍑芥暟 +* 鍙 鏁: wBase, 澶氶」寮 + Para锛屾牎楠屾暟鎹叆鍙 + Data, 鏍¢獙鏁版嵁闀垮害鍏ュ彛 +* 杩 鍥 鍊: crc16鏍¢獙鍊 *****************************************************************************************/ uint16_t CRC_Modbus(uint16_t wBase, uint8_t *para, uint16_t length) { @@ -710,18 +710,18 @@ uint16_t CRC_Modbus(uint16_t wBase, uint8_t *para, uint16_t length) } /***************************************************************************************** -* 函数名称: CRC_Sum -* 功能描述: 从第二个字节开始,求和取反 -* 参 数: _pbuff,校验数据入口 - _cmdLen,校验数据长度入口 -* 返 回 值: cmd_sum,校验值(一个字节) +* 鍑芥暟鍚嶇О: CRC_Sum +* 鍔熻兘鎻忚堪: 浠庣浜屼釜瀛楄妭寮濮嬶紝姹傚拰鍙栧弽 +* 鍙 鏁: _pbuff锛屾牎楠屾暟鎹叆鍙 + _cmdLen锛屾牎楠屾暟鎹暱搴﹀叆鍙 +* 杩 鍥 鍊: cmd_sum锛屾牎楠屽(涓涓瓧鑺) *****************************************************************************************/ uint8_t CRC_Sum(uint8_t *_pbuff, uint16_t _cmdLen) { uint8_t cmd_sum=0; uint16_t i; - for(i=1;i<_cmdLen;i++)//从1开始,跳过第一个字节 + for(i=1;i<_cmdLen;i++)//浠1寮濮嬶紝璺宠繃绗竴涓瓧鑺 { cmd_sum += _pbuff[i]; } @@ -730,12 +730,12 @@ uint8_t CRC_Sum(uint8_t *_pbuff, uint16_t _cmdLen) return cmd_sum; } /** - * @brief 检查缓冲区是否全部等于指定字节值 - * @param data : 待检查的数据指针 - * @param len : 数据长度(字节数) - * @param val : 期望的字节值 (0x00 ~ 0xFF) - * @return true : 全部等于 val - * false: 存在不等于 val 的字节 + * @brief 妫鏌ョ紦鍐插尯鏄惁鍏ㄩ儴绛変簬鎸囧畾瀛楄妭鍊 + * @param data : 寰呮鏌ョ殑鏁版嵁鎸囬拡 + * @param len : 鏁版嵁闀垮害锛堝瓧鑺傛暟锛 + * @param val : 鏈熸湜鐨勫瓧鑺傚 (0x00 ~ 0xFF) + * @return true : 鍏ㄩ儴绛変簬 val + * false: 瀛樺湪涓嶇瓑浜 val 鐨勫瓧鑺 */ bool is_all_byte(const uint8_t *data, size_t len, uint8_t val) { @@ -747,12 +747,12 @@ bool is_all_byte(const uint8_t *data, size_t len, uint8_t val) return true; } /***************************************************************************************** -* 函数名称: HexToAscii -* 功能描述: 16进制转ASCII码 -* 参 数: HexData,16进制数组 - ASCData,ASCII码 - sLen,数据长度 -* 返 回 值: true或false +* 鍑芥暟鍚嶇О: HexToAscii +* 鍔熻兘鎻忚堪: 16杩涘埗杞珹SCII鐮 +* 鍙 鏁: HexData锛16杩涘埗鏁扮粍 + ASCData锛孉SCII鐮 + sLen锛屾暟鎹暱搴 +* 杩 鍥 鍊: true鎴杅alse *****************************************************************************************/ void HexToAscii(uint8_t *HexData, char *ASCData, uint8_t sLen) { diff --git a/source/src/SGCP.c b/source/src/SGCP.c index e342265..733a12d 100644 --- a/source/src/SGCP.c +++ b/source/src/SGCP.c @@ -1,37 +1,37 @@ -#include "SGCP.h" +锘#include "SGCP.h" #include "main.h" #include "UartDebug.h" #include "Update.h" #include "sx127x.h" #include "Algorithm.h" -/*烧录时配置项 -IROM1起始地址 0x00 0x20000 -IROM1串口升级地址 0x2A00 0x1D600 -串口升级打开USE_BOOTLOADER和点s文件中的LDR R2, =new_vect_table ;升级时打开 +/*鐑у綍鏃堕厤缃」 +IROM1璧峰鍦板潃 0x00 0x20000 +IROM1涓插彛鍗囩骇鍦板潃 0x2A00 0x1D600 +涓插彛鍗囩骇鎵撳紑USE_BOOTLOADER鍜岀偣s鏂囦欢涓殑LDR R2, =new_vect_table ;鍗囩骇鏃舵墦寮 */ -uint32_t LocalType; //本机设备类型 -uint32_t CommWay; //本机通讯方式 -uint32_t DeviceSign; //本机设备标志 -uint32_t AddNumber; //本机地址编号,数字部分对应唯一地址编号 +uint32_t LocalType; //鏈満璁惧绫诲瀷 +uint32_t CommWay; //鏈満閫氳鏂瑰紡 +uint32_t DeviceSign; //鏈満璁惧鏍囧織 +uint32_t AddNumber; //鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 //09 00 01 00 00 00 -uint8_t LocalMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};//本机MAC地址 -uint8_t GatewayMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //网关MAC地址,注册时全为0 -uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //本机数据包 -uint8_t LocalDataLen = sizeof(SGCP.DevData.LaserTracing); //本机设备数据长度 +uint8_t LocalMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};//鏈満MAC鍦板潃 +uint8_t GatewayMAC[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //缃戝叧MAC鍦板潃锛屾敞鍐屾椂鍏ㄤ负0 +uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //鏈満鏁版嵁鍖 +uint8_t LocalDataLen = sizeof(SGCP.DevData.LaserTracing); //鏈満璁惧鏁版嵁闀垮害 SGCP_t SGCP; /** ******************************************************************************* - ** \brief 设备数据信息获取 + ** \brief 璁惧鏁版嵁淇℃伅鑾峰彇 ** - ** \param Devtype 设备类型 + ** \param Devtype 璁惧绫诲瀷 ** - ** \param PayLoad 数据体 + ** \param PayLoad 鏁版嵁浣 ** - ** \retval Len 数据长度 + ** \retval Len 鏁版嵁闀垮害 ******************************************************************************/ static uint8_t DevGetDataMess(DEVICE_TYPE_M Devtype, uint8_t *PayLoad) { @@ -108,13 +108,13 @@ static uint8_t DevGetDataMess(DEVICE_TYPE_M Devtype, uint8_t *PayLoad) } /** ******************************************************************************* - ** \brief 子设备校准指令 + ** \brief 瀛愯澶囨牎鍑嗘寚浠 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToSDCali(uint8_t Addr) { @@ -140,13 +140,13 @@ static void ToSDCali(uint8_t Addr) } /** ******************************************************************************* - ** \brief 子设备读取数据指令 + ** \brief 瀛愯澶囪鍙栨暟鎹寚浠 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToSDReadData(uint8_t Addr) { @@ -172,13 +172,13 @@ static void ToSDReadData(uint8_t Addr) } /** ******************************************************************************* - ** \brief 子设备查询指令 + ** \brief 瀛愯澶囨煡璇㈡寚浠 ** - ** \param [in] Addr 子设备485地址 + ** \param [in] Addr 瀛愯澶485鍦板潃 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToSDInquire(uint8_t Addr) { @@ -204,13 +204,13 @@ static void ToSDInquire(uint8_t Addr) } /** ******************************************************************************* - ** \brief 子设备设置采集时间间隔指令 + ** \brief 瀛愯澶囪缃噰闆嗘椂闂撮棿闅旀寚浠 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] CollTime 采集时间间隔 + ** \param [in] CollTime 閲囬泦鏃堕棿闂撮殧 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToSDSetColTime(uint8_t Addr, uint16_t CollectInterval) { @@ -239,13 +239,13 @@ static void ToSDSetColTime(uint8_t Addr, uint16_t CollectInterval) } /** ******************************************************************************* - ** \brief 子设备时间同步指令 + ** \brief 瀛愯澶囨椂闂村悓姝ユ寚浠 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToSDSyncTime(uint8_t Addr, uint32_t TimeStamp) { @@ -277,13 +277,13 @@ static void ToSDSyncTime(uint8_t Addr, uint32_t TimeStamp) /** ******************************************************************************* - ** \brief 子设备校准回应 + ** \brief 瀛愯澶囨牎鍑嗗洖搴 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] Ok_Err 成功失败标志位 + ** \param [in] Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToMDCaliRes(uint8_t Addr, bool Ok_Err) { @@ -311,13 +311,13 @@ static void ToMDCaliRes(uint8_t Addr, bool Ok_Err) } /** ******************************************************************************* - ** \brief 子设备读取数据指令回应 + ** \brief 瀛愯澶囪鍙栨暟鎹寚浠ゅ洖搴 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToMDReadDataRes(uint8_t Addr, uint8_t *PayLoad, uint8_t Len) { @@ -348,13 +348,13 @@ static void ToMDReadDataRes(uint8_t Addr, uint8_t *PayLoad, uint8_t Len) } /** ******************************************************************************* - ** \brief 子设备查询指令回应 + ** \brief 瀛愯澶囨煡璇㈡寚浠ゅ洖搴 ** - ** \param [in] Addr 子设备485地址 + ** \param [in] Addr 瀛愯澶485鍦板潃 ** - ** \param [in] PayLoad 数据体 + ** \param [in] PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToMDInquireRes(uint8_t Addr) { @@ -385,13 +385,13 @@ static void ToMDInquireRes(uint8_t Addr) } /** ******************************************************************************* - ** \brief 子设备设置采集时间间隔指令回应 + ** \brief 瀛愯澶囪缃噰闆嗘椂闂撮棿闅旀寚浠ゅ洖搴 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] Ok_Err 成功失败标志位 + ** \param [in] Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToMDSetColTimeRes(uint8_t Addr, bool Ok_Err) { @@ -419,13 +419,13 @@ static void ToMDSetColTimeRes(uint8_t Addr, bool Ok_Err) } /** ******************************************************************************* - ** \brief 子设备时间同步指令回应 + ** \brief 瀛愯澶囨椂闂村悓姝ユ寚浠ゅ洖搴 ** - ** \param [in] Addr 子设备地址 + ** \param [in] Addr 瀛愯澶囧湴鍧 ** - ** \param [in] Ok_Err 成功失败标志位 + ** \param [in] Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToMDSyncTimeRes(uint8_t Addr, bool Ok_Err) { @@ -455,11 +455,11 @@ static void ToMDSyncTimeRes(uint8_t Addr, bool Ok_Err) /** ******************************************************************************* - ** \brief 向网关申请注册 + ** \brief 鍚戠綉鍏崇敵璇锋敞鍐 ** - ** \param PayLoad 数据体 + ** \param PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWDevLogin(void) { @@ -499,11 +499,11 @@ static void ToGWDevLogin(void) } /** ******************************************************************************* - ** \brief 网关校准指令回应 + ** \brief 缃戝叧鏍″噯鎸囦护鍥炲簲 ** - ** \param Ok_Err 成功失败标志位 + ** \param Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWCaliRes(bool Ok_Err) { @@ -538,11 +538,11 @@ SGCP.GWRS485Rx.sCmdMDToGW = (GWTOMD_CMD_M)GFHeader->Cmd; /** ******************************************************************************* - ** \brief 信号质量查询指令 + ** \brief 淇″彿璐ㄩ噺鏌ヨ鎸囦护 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWSignalQuery(void) { @@ -574,11 +574,11 @@ static void ToGWSignalQuery(void) } /** ******************************************************************************* - ** \brief 网关读取数据指令回应 + ** \brief 缃戝叧璇诲彇鏁版嵁鎸囦护鍥炲簲 ** - ** \param PayLoad 数据体 + ** \param PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWReadDataRes(uint8_t *PayLoad) { @@ -615,11 +615,11 @@ SGCP.GWRS485Rx.sCmdMDToGW = (GWTOMD_CMD_M)GFHeader->Cmd; /** ******************************************************************************* - ** \brief 网关设置采集时间间隔指令回应 + ** \brief 缃戝叧璁剧疆閲囬泦鏃堕棿闂撮殧鎸囦护鍥炲簲 ** - ** \param Ok_Err 成功失败标志位 + ** \param Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWSetColTimeRes(bool Ok_Err) { @@ -654,11 +654,11 @@ SGCP.GWRS485Rx.sCmdMDToGW = (GWTOMD_CMD_M)GFHeader->Cmd; /** ******************************************************************************* - ** \brief 网关时间同步指令回应 + ** \brief 缃戝叧鏃堕棿鍚屾鎸囦护鍥炲簲 ** - ** \param Ok_Err 成功失败标志位 + ** \param Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWSyncTimeRes(bool Ok_Err) { @@ -692,11 +692,11 @@ SGCP.GWRS485Rx.sCmdMDToGW = (GWTOMD_CMD_M)GFHeader->Cmd; } /** ******************************************************************************* - ** \brief 内部指令修改RS485地址回应 + ** \brief 鍐呴儴鎸囦护淇敼RS485鍦板潃鍥炲簲 ** - ** \param PayLoad 数据体 + ** \param PayLoad 鏁版嵁浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void Alter485AddrRes(uint8_t *MAC, bool Ok_Err) { @@ -723,11 +723,11 @@ static void Alter485AddrRes(uint8_t *MAC, bool Ok_Err) } /** ******************************************************************************* - ** \brief 主设备接收子设备数据处理 + ** \brief 涓昏澶囨帴鏀跺瓙璁惧鏁版嵁澶勭悊 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void SubsetRevHandler(void) { @@ -759,7 +759,7 @@ static void SubsetRevHandler(void) break;} case MDTOSD_CMD_INQUIRE:{ - memcpy(&SGCP.DeviceMAC[SGCP.DeviceN], PayLoad, sizeof(SGCP.DeviceMAC[SGCP.DeviceN]));//子设备MAC + memcpy(&SGCP.DeviceMAC[SGCP.DeviceN], PayLoad, sizeof(SGCP.DeviceMAC[SGCP.DeviceN]));//瀛愯澶嘙AC SGCP.SubsetMACOk = true; break;} @@ -774,11 +774,11 @@ static void SubsetRevHandler(void) } /** ******************************************************************************* - ** \brief 子设备接收主设备数据处理 + ** \brief 瀛愯澶囨帴鏀朵富璁惧鏁版嵁澶勭悊 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void MasRevHandler(void) { @@ -858,9 +858,9 @@ static void MasRevHandler(void) App.Para.Layout.CollectTime = temp; SAVE_APP_PARA((uint32_t *)&App.Para); if(App.Para.Layout.CollectTime >= 30) - RTCInit(30);//定时采集时间重新初始化 + RTCInit(30);//瀹氭椂閲囬泦鏃堕棿閲嶆柊鍒濆鍖 else - RTCInit(App.Para.Layout.CollectTime);//定时采集时间重新初始化 + RTCInit(App.Para.Layout.CollectTime);//瀹氭椂閲囬泦鏃堕棿閲嶆柊鍒濆鍖 if(SGCP.MasStatus == MAS_STATUS_IDLE) { SGCP.MasStatus = MAS_STATUS_SET_COL_TIME; @@ -883,7 +883,7 @@ static void MasRevHandler(void) { App.Para.Layout.TimeStamp = temp; SAVE_APP_PARA((uint32_t *)&App.Para); - TimeSync(App.Para.Layout.TimeStamp); //设置时间 + TimeSync(App.Para.Layout.TimeStamp); //璁剧疆鏃堕棿 if(SGCP.MasStatus == MAS_STATUS_IDLE) { SGCP.MasStatus = MAS_STATUS_SYNC_TIME; @@ -894,11 +894,11 @@ static void MasRevHandler(void) } /** ******************************************************************************* - ** \brief 主设备接收网关数据处理 + ** \brief 涓昏澶囨帴鏀剁綉鍏虫暟鎹鐞 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void GWRevHandler(void) { @@ -969,12 +969,12 @@ static void GWRevHandler(void) { App.Para.Layout.TimeStamp = LPay->TimeStamp; - int8_t TimeDiff;//时间差 + int8_t TimeDiff;//鏃堕棿宸 int RTCTimes = TimeTs(); TimeDiff = App.Para.Layout.TimeStamp - RTCTimes; if(TimeDiff > 1 || TimeDiff < -1) { - TimeSync(App.Para.Layout.TimeStamp); //向通讯单元RTC时间寄存器写入时间网关下发的时间 + TimeSync(App.Para.Layout.TimeStamp); //鍚戦氳鍗曞厓RTC鏃堕棿瀵勫瓨鍣ㄥ啓鍏ユ椂闂寸綉鍏充笅鍙戠殑鏃堕棿 } SGCP.UploadOk = true; SGCP.NextGWStatus = GW_STATUS_IDLE; @@ -993,12 +993,12 @@ static void GWRevHandler(void) LPay->ERInterval, LPay->ERTime); - int8_t TimeDiff;//时间差 + int8_t TimeDiff;//鏃堕棿宸 int RTCTimes = TimeTs(); TimeDiff = App.Para.Layout.TimeStamp - RTCTimes; if(TimeDiff > 1 || TimeDiff < -1) { - TimeSync(App.Para.Layout.TimeStamp); //向通讯单元RTC时间寄存器写入时间网关下发的时间 + TimeSync(App.Para.Layout.TimeStamp); //鍚戦氳鍗曞厓RTC鏃堕棿瀵勫瓨鍣ㄥ啓鍏ユ椂闂寸綉鍏充笅鍙戠殑鏃堕棿 } SGCP.UploadOk = true; SGCP.NextGWStatus = GW_STATUS_UPLOAD_SENSOR; @@ -1071,7 +1071,7 @@ static void GWRevHandler(void) } App.Para.Layout.TimeStamp = temp; SAVE_APP_PARA((uint32_t *)&App.Para); - TimeSync(App.Para.Layout.TimeStamp); //设置时间 + TimeSync(App.Para.Layout.TimeStamp); //璁剧疆鏃堕棿 } } break;} @@ -1116,11 +1116,11 @@ static void GWRevHandler(void) } /** ******************************************************************************* - ** \brief 内部指令指令数据接收处理 + ** \brief 鍐呴儴鎸囦护鎸囦护鏁版嵁鎺ユ敹澶勭悊 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void InRevHandler(void) { @@ -1172,14 +1172,14 @@ static void InRevHandler(void) break;} } } -#if (SGCP_SELECT == 0)//本机为单个主设备接多个子设备 +#if (SGCP_SELECT == 0)//鏈満涓哄崟涓富璁惧鎺ュ涓瓙璁惧 /** ******************************************************************************* - ** \brief 接收子设备数据状态机 + ** \brief 鎺ユ敹瀛愯澶囨暟鎹姸鎬佹満 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ void SubRevLoopHandler(void) { @@ -1293,8 +1293,8 @@ void SubRevLoopHandler(void) SGCP.Subset_IRQ_Status = false; memset(&SGCP.Dev485Addrs, NULL, sizeof(SGCP.Dev485Addrs)); memset(&SGCP.DeviceMAC, NULL, sizeof(SGCP.DeviceMAC)); - SGCP.Dev485Addrs[SGCP.DeviceN] = SGCP.Dev485Addr;//主设备485 - memcpy(SGCP.DeviceMAC[SGCP.DeviceN], LocalMAC, sizeof(LocalMAC));//主设备MAC + SGCP.Dev485Addrs[SGCP.DeviceN] = SGCP.Dev485Addr;//涓昏澶485 + memcpy(SGCP.DeviceMAC[SGCP.DeviceN], LocalMAC, sizeof(LocalMAC));//涓昏澶嘙AC DBG_LOG("Master Device MAC:%02X %02X %02X %02X %02X %02X\r\n", SGCP.DeviceMAC[SGCP.DeviceN][0],SGCP.DeviceMAC[SGCP.DeviceN][1],SGCP.DeviceMAC[SGCP.DeviceN][2], SGCP.DeviceMAC[SGCP.DeviceN][3],SGCP.DeviceMAC[SGCP.DeviceN][4],SGCP.DeviceMAC[SGCP.DeviceN][5]); @@ -1363,11 +1363,11 @@ void SubRevLoopHandler(void) /** ******************************************************************************* - ** \brief 接收网关数据状态机 + ** \brief 鎺ユ敹缃戝叧鏁版嵁鐘舵佹満 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ void GwRevLoopHandler(void) { @@ -1441,14 +1441,14 @@ void GwRevLoopHandler(void) ToGWCaliRes(SGCP.MasterCaliOk); DBG_LOG("Alone Cali Ok!\r\n"); } - SGCP.TimingAcquisition = true;//采集新的传感器数据 + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 break;} case GW_STATUS_READ_SENSOR:{ PrintfMess(); ToGWReadDataRes(SGCP.DeviceData); DBG_LOG("Upload data Ok!\r\n"); - SGCP.TimingAcquisition = true;//采集新的传感器数据 + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 SGCP.GWStatus = GW_STATUS_WAIT_SUBIDLE; SGCP.NextSubStatus = SUB_STATUS_READMASTER_DATA; SGCP.GW1mSDelayCnt = 5000; @@ -1493,30 +1493,30 @@ void GwRevLoopHandler(void) -/* 中断回调函数 */ +/* 涓柇鍥炶皟鍑芥暟 */ /***************************************************************************************** -* 函数名称: LORA_RxCallBack -* 功能描述: Lora数据接收函数 -* 参 数: *rBuff,接收到的字符串 - rlen,接收到的字符串长度 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LORA_RxCallBack +* 鍔熻兘鎻忚堪: Lora鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: *rBuff锛屾帴鏀跺埌鐨勫瓧绗︿覆 + rlen锛屾帴鏀跺埌鐨勫瓧绗︿覆闀垮害 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LORA_RxCallBack(uint8_t *rBuff, uint8_t rlen) { -// if (rlen > 0 && rBuff[0] == 0x7C && memcmp(&rBuff[7],&Comm_DevAddr[0],6) == 0) // 如果接收到了数据,并且设备地址相同则处理接收到的数据 +// if (rlen > 0 && rBuff[0] == 0x7C && memcmp(&rBuff[7],&Comm_DevAddr[0],6) == 0) // 濡傛灉鎺ユ敹鍒颁簡鏁版嵁,骞朵笖璁惧鍦板潃鐩稿悓鍒欏鐞嗘帴鏀跺埌鐨勬暟鎹 // { -// //< 处理接收到的数据 +// //< 澶勭悊鎺ユ敹鍒扮殑鏁版嵁 // memcpy(App.UpperBuff, rBuff, rlen); // App.UpperBuffLen = rlen; -// App.Upper_IRQ_Status = true;//上位机串口中断 +// App.Upper_IRQ_Status = true;//涓婁綅鏈轰覆鍙d腑鏂 // } } /***************************************************************************************** -* 函数名称: LPUartRx_CallBack -* 功能描述: 低功耗串口数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LPUartRx_CallBack +* 鍔熻兘鎻忚堪: 浣庡姛鑰椾覆鍙f暟鎹帴鏀跺嚱鏁 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LPUartRx_CallBack(uint8_t rData) { @@ -1543,7 +1543,7 @@ void LPUartRx_CallBack(uint8_t rData) if(SGCP.GWRS485Rx.RxLen == 15) { SGCP.GWRS485Rx.rPayLen |= (rData << 8); } - if(SGCP.GWRS485Rx.rPayLen > 10) { //大于最大负载长度,认为错误 + if(SGCP.GWRS485Rx.rPayLen > 10) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 SGCP.GWRS485Rx.HeaderFrame = false; return; } @@ -1556,7 +1556,7 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.GatewayBuff, SGCP.GWRS485Rx.RxBuff, SGCP.GWRS485Rx.RxLen); SGCP.GatewayBuffLen = SGCP.GWRS485Rx.RxLen; - if(SGCP.GWRS485Rx.RxBuff[0] == 0x7B) GWRevHandler();//网关数据接收处理 + if(SGCP.GWRS485Rx.RxBuff[0] == 0x7B) GWRevHandler();//缃戝叧鏁版嵁鎺ユ敹澶勭悊 } } if(SGCP.GWRS485Rx.RxBuff[0] == 0x7D) @@ -1572,17 +1572,17 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.InsideBuff, SGCP.GWRS485Rx.RxBuff, SGCP.GWRS485Rx.RxLen); SGCP.InsideBuffLen = SGCP.GWRS485Rx.RxLen; - if(SGCP.InsideBuff[0] == 0x7D) InRevHandler();//内部指令 + if(SGCP.InsideBuff[0] == 0x7D) InRevHandler();//鍐呴儴鎸囦护 } } } } /***************************************************************************************** -* 函数名称: Uart1Rx_CallBack -* 功能描述: 串口1数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: Uart1Rx_CallBack +* 鍔熻兘鎻忚堪: 涓插彛1鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void Uart1Rx_CallBack(uint8_t rData) { @@ -1600,7 +1600,7 @@ void Uart1Rx_CallBack(uint8_t rData) } else { if(SGCP.SDRS485Rx.RxLen == 3) { - if(rData > 36) { //大于最大负载长度,认为错误 + if(rData > 36) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 SGCP.SDRS485Rx.HeaderFrame = false; return; } @@ -1615,21 +1615,21 @@ void Uart1Rx_CallBack(uint8_t rData) memcpy(SGCP.SubsetBuff, SGCP.SDRS485Rx.RxBuff, SGCP.SDRS485Rx.RxLen); SGCP.SubsetBuffLen = SGCP.SDRS485Rx.RxLen; - if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//子设备串口中断 + if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//瀛愯澶囦覆鍙d腑鏂 } } } #endif -#if (SGCP_SELECT == 1)//本机为单个主设备 +#if (SGCP_SELECT == 1)//鏈満涓哄崟涓富璁惧 #if (LocalType == LASER_TRACING) /** ******************************************************************************* - ** \brief 网关激光状态回应 + ** \brief 缃戝叧婵鍏夌姸鎬佸洖搴 ** - ** \param Ok_Err 成功失败标志位 + ** \param Ok_Err 鎴愬姛澶辫触鏍囧織浣 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ static void ToGWLaserRes(bool Ok_Err) { @@ -1664,11 +1664,11 @@ SGCP.GWRS485Rx.sCmdMDToGW = (GWTOMD_CMD_M)GFHeader->Cmd; #endif /** ******************************************************************************* - ** \brief 接收网关数据状态机 + ** \brief 鎺ユ敹缃戝叧鏁版嵁鐘舵佹満 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ void GwRevLoopHandler(void) { @@ -1686,8 +1686,8 @@ void GwRevLoopHandler(void) SGCP.Dev485Addr = 0; memset(&SGCP.Dev485Addrs, NULL, sizeof(SGCP.Dev485Addrs)); memset(&SGCP.DeviceMAC, NULL, sizeof(SGCP.DeviceMAC)); - SGCP.Dev485Addrs[SGCP.DeviceN] = SGCP.Dev485Addr;//主设备485 - memcpy(SGCP.DeviceMAC[SGCP.DeviceN], LocalMAC, sizeof(LocalMAC));//主设备MAC + SGCP.Dev485Addrs[SGCP.DeviceN] = SGCP.Dev485Addr;//涓昏澶485 + memcpy(SGCP.DeviceMAC[SGCP.DeviceN], LocalMAC, sizeof(LocalMAC));//涓昏澶嘙AC DBG_LOG("Master Device MAC:%02X %02X %02X %02X %02X %02X\r\n", SGCP.DeviceMAC[SGCP.DeviceN][0],SGCP.DeviceMAC[SGCP.DeviceN][1],SGCP.DeviceMAC[SGCP.DeviceN][2], SGCP.DeviceMAC[SGCP.DeviceN][3],SGCP.DeviceMAC[SGCP.DeviceN][4],SGCP.DeviceMAC[SGCP.DeviceN][5]); @@ -1714,8 +1714,8 @@ void GwRevLoopHandler(void) if(SGCP.LoginOk == true) { DBG_LOG("Login Ok!\r\n"); - /*注册后传感器需立即更新数据*/ - SGCP.TimingAcquisition = true;//采集新的传感器数据 + /*娉ㄥ唽鍚庝紶鎰熷櫒闇绔嬪嵆鏇存柊鏁版嵁*/ + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 } if(SGCP.LoginOk == false) { @@ -1738,7 +1738,7 @@ void GwRevLoopHandler(void) ToGWCaliRes(SGCP.MasterCaliOk); DBG_LOG("Alone Cali Ok!\r\n"); } - SGCP.TimingAcquisition = true;//采集新的传感器数据 + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 SGCP.GWStatus = GW_STATUS_IDLE; break;} @@ -1753,7 +1753,7 @@ void GwRevLoopHandler(void) SGCP.DevData.LaserTracing.MasterDev.BatLevel = 0x00; #endif #if (SGCP_SELECT == 1 || SGCP_SELECT == 2) - SX1276LoCalcRssiSnr(&SGCP.DevData.LaserTracing.MasterDev.RSSI, &SGCP.DevData.LaserTracing.MasterDev.Nsr);//获取信号强度 + SX1276LoCalcRssiSnr(&SGCP.DevData.LaserTracing.MasterDev.RSSI, &SGCP.DevData.LaserTracing.MasterDev.Nsr);//鑾峰彇淇″彿寮哄害 #else SGCP.DevData.LaserTracing.MasterDev.RSSI = 0x00; SGCP.DevData.LaserTracing.MasterDev.Nsr = 0x00; @@ -1774,8 +1774,8 @@ void GwRevLoopHandler(void) } ToGWReadDataRes(SGCP.DeviceData); DBG_LOG("Upload data Ok!\r\n"); - /*上传完数据后传感器需立即更新数据*/ - SGCP.TimingAcquisition = true;//采集新的传感器数据 + /*涓婁紶瀹屾暟鎹悗浼犳劅鍣ㄩ渶绔嬪嵆鏇存柊鏁版嵁*/ + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 SGCP.GWStatus = GW_STATUS_IDLE; break;} @@ -1791,7 +1791,7 @@ void GwRevLoopHandler(void) ToGWSetColTimeRes(true); DBG_LOG("Alone CollectInterval Set as %04d\r\n",0x00, App.Para.Layout.CollectTime); } - /*GWRevHandler函数中已经缓存了接收到的采集时间间隔*/ + /*GWRevHandler鍑芥暟涓凡缁忕紦瀛樹簡鎺ユ敹鍒扮殑閲囬泦鏃堕棿闂撮殧*/ SGCP.GWStatus = GW_STATUS_IDLE; break;} @@ -1807,7 +1807,7 @@ void GwRevLoopHandler(void) ToGWSyncTimeRes(true); DBG_LOG("Alone time synchronization %08d\r\n",App.Para.Layout.TimeStamp); } - /*GWRevHandler函数中已经同步了接收到的时间戳*/ + /*GWRevHandler鍑芥暟涓凡缁忓悓姝ヤ簡鎺ユ敹鍒扮殑鏃堕棿鎴*/ SGCP.GWStatus = GW_STATUS_IDLE; break;} @@ -1847,8 +1847,8 @@ void GwRevLoopHandler(void) if(SGCP.UploadOk == true) { DBG_LOG("\r\nUpload data ok!\r\n"); - /*上传完数据后传感器需立即更新数据*/ - SGCP.TimingAcquisition = true;//采集新的传感器数据 + /*涓婁紶瀹屾暟鎹悗浼犳劅鍣ㄩ渶绔嬪嵆鏇存柊鏁版嵁*/ + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 } else if(SGCP.UploadOk == false) { @@ -1907,30 +1907,30 @@ void GwRevLoopHandler(void) } } -/* 中断回调函数 */ +/* 涓柇鍥炶皟鍑芥暟 */ /***************************************************************************************** -* 函数名称: LORA_RxCallBack -* 功能描述: Lora数据接收函数 -* 参 数: *rBuff,接收到的字符串 - rlen,接收到的字符串长度 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LORA_RxCallBack +* 鍔熻兘鎻忚堪: Lora鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: *rBuff锛屾帴鏀跺埌鐨勫瓧绗︿覆 + rlen锛屾帴鏀跺埌鐨勫瓧绗︿覆闀垮害 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LORA_RxCallBack(uint8_t *rBuff, uint8_t rlen) { - if (rlen > 0 && rBuff[0] == 0x7B && memcmp(&rBuff[7],&LocalMAC[0],6) == 0) // 如果接收到了数据,并且设备地址相同则处理接收到的数据 + if (rlen > 0 && rBuff[0] == 0x7B && memcmp(&rBuff[7],&LocalMAC[0],6) == 0) // 濡傛灉鎺ユ敹鍒颁簡鏁版嵁,骞朵笖璁惧鍦板潃鐩稿悓鍒欏鐞嗘帴鏀跺埌鐨勬暟鎹 { - //< 处理接收到的数据 + //< 澶勭悊鎺ユ敹鍒扮殑鏁版嵁 memcpy(SGCP.GatewayBuff, rBuff, rlen); SGCP.GatewayBuffLen = rlen; - GWRevHandler();//网关数据接收处理 + GWRevHandler();//缃戝叧鏁版嵁鎺ユ敹澶勭悊 } } /***************************************************************************************** -* 函数名称: LPUartRx_CallBack -* 功能描述: 低功耗串口数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LPUartRx_CallBack +* 鍔熻兘鎻忚堪: 浣庡姛鑰椾覆鍙f暟鎹帴鏀跺嚱鏁 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LPUartRx_CallBack(uint8_t rData) { @@ -1957,7 +1957,7 @@ void LPUartRx_CallBack(uint8_t rData) if(SGCP.GWRS485Rx.RxLen == 15) { SGCP.GWRS485Rx.rPayLen |= (rData << 8); } - if(SGCP.GWRS485Rx.rPayLen > 10) { //大于最大负载长度,认为错误 + if(SGCP.GWRS485Rx.rPayLen > 10) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 SGCP.GWRS485Rx.HeaderFrame = false; return; } @@ -1970,7 +1970,7 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.GatewayBuff, SGCP.GWRS485Rx.RxBuff, SGCP.GWRS485Rx.RxLen); SGCP.GatewayBuffLen = SGCP.GWRS485Rx.RxLen; - if(SGCP.GWRS485Rx.RxBuff[0] == 0x7B) GWRevHandler();//网关数据接收处理 + if(SGCP.GWRS485Rx.RxBuff[0] == 0x7B) GWRevHandler();//缃戝叧鏁版嵁鎺ユ敹澶勭悊 } } if(SGCP.GWRS485Rx.RxBuff[0] == 0x7D) @@ -1986,17 +1986,17 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.InsideBuff, SGCP.GWRS485Rx.RxBuff, SGCP.GWRS485Rx.RxLen); SGCP.InsideBuffLen = SGCP.GWRS485Rx.RxLen; - if(SGCP.GWRS485Rx.RxBuff[0] == 0x7D) InRevHandler();//内部指令 + if(SGCP.GWRS485Rx.RxBuff[0] == 0x7D) InRevHandler();//鍐呴儴鎸囦护 } } } } /***************************************************************************************** -* 函数名称: Uart1Rx_CallBack -* 功能描述: 串口1数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: Uart1Rx_CallBack +* 鍔熻兘鎻忚堪: 涓插彛1鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void Uart1Rx_CallBack(uint8_t rData) { @@ -2014,7 +2014,7 @@ void Uart1Rx_CallBack(uint8_t rData) // } // else { // if(SGCP.SDRS485Rx.RxLen == 3) { -// if(rData > 36) { //大于最大负载长度,认为错误 +// if(rData > 36) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 // SGCP.SDRS485Rx.HeaderFrame = false; // return; // } @@ -2029,20 +2029,20 @@ void Uart1Rx_CallBack(uint8_t rData) // memcpy(SGCP.SubsetBuff, SGCP.SDRS485Rx.RxBuff, SGCP.SDRS485Rx.RxLen); // SGCP.SubsetBuffLen = SGCP.SDRS485Rx.RxLen; -// if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//子设备串口中断 +// if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//瀛愯澶囦覆鍙d腑鏂 // } // } } #endif -#if (SGCP_SELECT == 2)//本机为单个子设备 +#if (SGCP_SELECT == 2)//鏈満涓哄崟涓瓙璁惧 /** ******************************************************************************* - ** \brief 接收主设备数据状态机 + ** \brief 鎺ユ敹涓昏澶囨暟鎹姸鎬佹満 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ void MasRevLoopHandler(void) { @@ -2063,7 +2063,7 @@ void MasRevLoopHandler(void) ToMDCaliRes(App.Para.Layout.RS485Addr, SGCP.SubsetCaliOk); DBG_LOG("Alone Cail!\r\n"); } - SGCP.TimingAcquisition = true;//采集新的传感器数据 + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 SGCP.MasStatus = MAS_STATUS_IDLE; break;} @@ -2082,7 +2082,7 @@ void MasRevLoopHandler(void) ToMDReadDataRes(App.Para.Layout.RS485Addr, SGCP.DeviceData, SGCP.DeviceDataLen); DBG_LOG("Upload Sensor Data Ok!\r\n"); - SGCP.TimingAcquisition = true;//采集新的传感器数据 + SGCP.TimingAcquisition = true;//閲囬泦鏂扮殑浼犳劅鍣ㄦ暟鎹 SGCP.MasStatus = MAS_STATUS_IDLE; break;} @@ -2125,30 +2125,30 @@ void MasRevLoopHandler(void) break;} } } -/* 中断回调函数 */ +/* 涓柇鍥炶皟鍑芥暟 */ /***************************************************************************************** -* 函数名称: LORA_RxCallBack -* 功能描述: Lora数据接收函数 -* 参 数: *rBuff,接收到的字符串 - rlen,接收到的字符串长度 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LORA_RxCallBack +* 鍔熻兘鎻忚堪: Lora鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: *rBuff锛屾帴鏀跺埌鐨勫瓧绗︿覆 + rlen锛屾帴鏀跺埌鐨勫瓧绗︿覆闀垮害 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LORA_RxCallBack(uint8_t *rBuff, uint8_t rlen) { -// if (rlen > 0 && rBuff[0] == 0x7C && memcmp(&rBuff[7],&Comm_DevAddr[0],6) == 0) // 如果接收到了数据,并且设备地址相同则处理接收到的数据 +// if (rlen > 0 && rBuff[0] == 0x7C && memcmp(&rBuff[7],&Comm_DevAddr[0],6) == 0) // 濡傛灉鎺ユ敹鍒颁簡鏁版嵁,骞朵笖璁惧鍦板潃鐩稿悓鍒欏鐞嗘帴鏀跺埌鐨勬暟鎹 // { -// //< 处理接收到的数据 +// //< 澶勭悊鎺ユ敹鍒扮殑鏁版嵁 // memcpy(App.UpperBuff, rBuff, rlen); // App.UpperBuffLen = rlen; -// App.Upper_IRQ_Status = true;//上位机串口中断 +// App.Upper_IRQ_Status = true;//涓婁綅鏈轰覆鍙d腑鏂 // } } /***************************************************************************************** -* 函数名称: LPUartRx_CallBack -* 功能描述: 低功耗串口数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LPUartRx_CallBack +* 鍔熻兘鎻忚堪: 浣庡姛鑰椾覆鍙f暟鎹帴鏀跺嚱鏁 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void LPUartRx_CallBack(uint8_t rData) { @@ -2170,7 +2170,7 @@ void LPUartRx_CallBack(uint8_t rData) if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) { if(SGCP.SDRS485Rx.RxLen == 3) { - if(rData > 36) { //大于最大负载长度,认为错误 + if(rData > 36) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 SGCP.SDRS485Rx.HeaderFrame = false; return; } @@ -2185,7 +2185,7 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.SubsetBuff, SGCP.SDRS485Rx.RxBuff, SGCP.SDRS485Rx.RxLen); SGCP.SubsetBuffLen = SGCP.SDRS485Rx.RxLen; - if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) MasRevHandler();//子设备串口中断 + if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) MasRevHandler();//瀛愯澶囦覆鍙d腑鏂 } } if(SGCP.SDRS485Rx.RxBuff[0] == 0x7D) @@ -2201,16 +2201,16 @@ void LPUartRx_CallBack(uint8_t rData) memcpy(SGCP.InsideBuff, SGCP.SDRS485Rx.RxBuff, SGCP.SDRS485Rx.RxLen); SGCP.InsideBuffLen = SGCP.SDRS485Rx.RxLen; - if(SGCP.SDRS485Rx.RxBuff[0] == 0x7D) InRevHandler();//内部指令 + if(SGCP.SDRS485Rx.RxBuff[0] == 0x7D) InRevHandler();//鍐呴儴鎸囦护 } } } } /***************************************************************************************** -* 函数名称: Uart1Rx_CallBack -* 功能描述: 串口1数据接收函数 -* 参 数: rData,接收到的字节 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: Uart1Rx_CallBack +* 鍔熻兘鎻忚堪: 涓插彛1鏁版嵁鎺ユ敹鍑芥暟 +* 鍙 鏁: rData锛屾帴鏀跺埌鐨勫瓧鑺 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void Uart1Rx_CallBack(uint8_t rData) { @@ -2228,7 +2228,7 @@ void Uart1Rx_CallBack(uint8_t rData) // } // else { // if(SGCP.SDRS485Rx.RxLen == 3) { -// if(rData > 36) { //大于最大负载长度,认为错误 +// if(rData > 36) { //澶т簬鏈澶ц礋杞介暱搴︼紝璁や负閿欒 // SGCP.SDRS485Rx.HeaderFrame = false; // return; // } @@ -2243,7 +2243,7 @@ void Uart1Rx_CallBack(uint8_t rData) // memcpy(SGCP.SubsetBuff, SGCP.SDRS485Rx.RxBuff, SGCP.SDRS485Rx.RxLen); // SGCP.SubsetBuffLen = SGCP.SDRS485Rx.RxLen; -// if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//子设备串口中断 +// if(SGCP.SDRS485Rx.RxBuff[0] == 0x7C) SGCP.Subset_IRQ_Status = true;//瀛愯澶囦覆鍙d腑鏂 // } // } } @@ -2252,11 +2252,11 @@ void Uart1Rx_CallBack(uint8_t rData) /** ******************************************************************************* - ** \brief 内部指令数据状态机 + ** \brief 鍐呴儴鎸囦护鏁版嵁鐘舵佹満 ** - ** \param 无 + ** \param 鏃 ** - ** \retval 无 + ** \retval 鏃 ******************************************************************************/ void InRevLoopHandler(void) { @@ -2273,17 +2273,17 @@ void InRevLoopHandler(void) break;} case IN_STATUS_UPDATE:{ - Update(SGCP.InsidePay);//固件更新. + Update(SGCP.InsidePay);//鍥轰欢鏇存柊. memset(SGCP.InsidePay, NULL, sizeof(SGCP.InsidePay)); SGCP.InStatus = IN_STATUS_IDLE; break;} } } /***************************************************************************************** -* 函数名称: SGCP1mSRoutine -* 功能描述: SGCP时基循环处理函数 -* 参 数: 无 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: SGCP1mSRoutine +* 鍔熻兘鎻忚堪: SGCP鏃跺熀寰幆澶勭悊鍑芥暟 +* 鍙 鏁: 鏃 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void SGCP1mSRoutine(void) { diff --git a/source/src/Update.c b/source/src/Update.c index c1f023e..3e45e4a 100644 --- a/source/src/Update.c +++ b/source/src/Update.c @@ -1,13 +1,13 @@ -#include "Update.h" +锘#include "Update.h" #include "UartDebug.h" #include "main.h" #include "bsp.h" /***************************************************************************************** -* 函数名称: Update -* 功能描述: 固件升级,此函数在解析到升级指令是调用 -* 参 数: PayLoad 协议负载,需去除帧头等信息,只传负载数据 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: Update +* 鍔熻兘鎻忚堪: 鍥轰欢鍗囩骇,姝ゅ嚱鏁板湪瑙f瀽鍒板崌绾ф寚浠ゆ槸璋冪敤 +* 鍙 鏁: PayLoad 鍗忚璐熻浇锛岄渶鍘婚櫎甯уご绛変俊鎭紝鍙紶璐熻浇鏁版嵁 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void Update(uint8_t *PayLoad) { @@ -32,10 +32,10 @@ void Update(uint8_t *PayLoad) } /***************************************************************************************** -* 函数名称: UpdateInit -* 功能描述: 升级参数初始化,需要在程序启动,外设初试完后调用 -* 参 数: 无 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: UpdateInit +* 鍔熻兘鎻忚堪: 鍗囩骇鍙傛暟鍒濆鍖栵紝闇瑕佸湪绋嬪簭鍚姩锛屽璁惧垵璇曞畬鍚庤皟鐢 +* 鍙 鏁: 鏃 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void UpdateInit(void) { diff --git a/source/src/bsp.c b/source/src/bsp.c index 60cf0a3..d916d5b 100644 --- a/source/src/bsp.c +++ b/source/src/bsp.c @@ -32,51 +32,51 @@ extern void LORA_RxCallBack(uint8_t *rBuff, uint8_t rlen); static __IO uint32_t SysTickCnt = 0; static volatile uint32_t u32AdcRestult; -static void SystemClkDivInit(void)//系统时钟分频设置 +static void SystemClkDivInit(void)//绯荤粺鏃堕挓鍒嗛璁剧疆 { - //时钟分频设置 + //鏃堕挓鍒嗛璁剧疆 Sysctrl_SetHCLKDiv(SysctrlHclkDiv1); Sysctrl_SetPCLKDiv(SysctrlPclkDiv1); } -static void SystemClkInit(en_sysctrl_rch_freq_t enRchFreq)//时钟初始化 +static void SystemClkInit(en_sysctrl_rch_freq_t enRchFreq)//鏃堕挓鍒濆鍖 { - ///< RCH时钟不同频率的切换,需要先将时钟切换到RCL + ///< RCH鏃堕挓涓嶅悓棰戠巼鐨勫垏鎹紝闇瑕佸厛灏嗘椂閽熷垏鎹㈠埌RCL Sysctrl_SetRCLTrim(SysctrlRclFreq38400); Sysctrl_SetRCLStableTime(SysctrlRclStableCycle64); Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); - /*内部高速时钟初始化 24MHZ*/ + /*鍐呴儴楂橀熸椂閽熷垵濮嬪寲 24MHZ*/ /*Sysctrl_SetRCHTrim(enRchFreq); Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE); - //< HCLK不超过24M:此处设置FLASH读等待周期为0 cycle + //< HCLK涓嶈秴杩24M锛氭澶勮缃瓼LASH璇荤瓑寰呭懆鏈熶负0 cycle Flash_WaitCycle(FlashWaitCycle0); - Sysctrl_SysClkSwitch(SysctrlClkRCH);//系统时钟源选择 + Sysctrl_SysClkSwitch(SysctrlClkRCH);//绯荤粺鏃堕挓婧愰夋嫨 */ - /*内部高速时钟初始化 48MHZ*/ + /*鍐呴儴楂橀熸椂閽熷垵濮嬪寲 48MHZ*/ stc_sysctrl_pll_cfg_t stcPLLCfg; - ///< 加载目标频率的RCH的TRIM值 + ///< 鍔犺浇鐩爣棰戠巼鐨凴CH鐨凾RIM鍊 Sysctrl_SetRCHTrim(SysctrlRchFreq4MHz); - ///< 使能RCH + ///< 浣胯兘RCH Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE); stcPLLCfg.enInFreq = SysctrlPllInFreq4_6MHz; //RCH 4MHz - stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 输出 - stcPLLCfg.enPllClkSrc = SysctrlPllRch; //输入时钟源选择RCH + stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 杈撳嚭 + stcPLLCfg.enPllClkSrc = SysctrlPllRch; //杈撳叆鏃堕挓婧愰夋嫨RCH stcPLLCfg.enPllMul = SysctrlPllMul12; //4MHz x 12 = 48MHz Sysctrl_SetPLLFreq(&stcPLLCfg); - ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle) + ///< 褰撲娇鐢ㄧ殑鏃堕挓婧怘CLK澶т簬24M锛氳缃瓼LASH 璇荤瓑寰呭懆鏈熶负1 cycle(榛樿鍊间篃涓1 cycle) Flash_WaitCycle(FlashWaitCycle1); - ///< 使能PLL + ///< 浣胯兘PLL Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE); - ///< 时钟切换到PLL + ///< 鏃堕挓鍒囨崲鍒癙LL Sysctrl_SysClkSwitch(SysctrlClkPLL); - /*外部低速晶振初始化 32.768KHz*/ + /*澶栭儴浣庨熸櫠鎸垵濮嬪寲 32.768KHz*/ /* Sysctrl_XTLDriverCfg(SysctrlXtlAmp3, SysctrlXtalDriver3); Sysctrl_SetXTLStableTime(SysctrlXtlStableCycle16384); Sysctrl_ClkSourceEnable(SysctrlClkXTL, TRUE); @@ -84,9 +84,9 @@ static void SystemClkInit(en_sysctrl_rch_freq_t enRchFreq)//时 } static void SystemRCLInit(void) { - Sysctrl_SetRCLTrim(SysctrlRclFreq38400); ///< 配置RCL时钟为38400kHz + Sysctrl_SetRCLTrim(SysctrlRclFreq38400); ///< 閰嶇疆RCL鏃堕挓涓38400kHz Sysctrl_SetRCLStableTime(SysctrlRclStableCycle256); - Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); ///< 使能RCL时钟 + Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); ///< 浣胯兘RCL鏃堕挓 } void Uart0Init(uint32_t Baud) @@ -111,21 +111,21 @@ void Uart0Init(uint32_t Baud) DDL_ZERO_STRUCT(stcCfg); Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,TRUE); - /// 0x99 || RtcInitStruct.rtcTime.u8Month > 0x12) { @@ -301,18 +301,18 @@ void RTCInit(uint8_t sec) RtcInitStruct.rtcTime.u8Year = 0x23; } RtcInitStruct.rtcCompen = RtcCompenEnable; - RtcInitStruct.rtcCompValue = 0; //补偿值 根据实际情况进行补偿 + RtcInitStruct.rtcCompValue = 0; //琛ュ伩鍊 鏍规嵁瀹為檯鎯呭喌杩涜琛ュ伩 Rtc_Init(&RtcInitStruct); - Rtc_AlmIeCmd(TRUE); //使能闹钟中断 - EnableNvic(RTC_IRQn, IrqLevel3, TRUE); //使能RTC中断向量 - Rtc_Cmd(TRUE); //使能RTC开始计数 - Rtc_StartWait(); //启动RTC计数,如果要立即切换到低功耗,需要执行此函数 + Rtc_AlmIeCmd(TRUE); //浣胯兘闂归挓涓柇 + EnableNvic(RTC_IRQn, IrqLevel3, TRUE); //浣胯兘RTC涓柇鍚戦噺 + Rtc_Cmd(TRUE); //浣胯兘RTC寮濮嬭鏁 + Rtc_StartWait(); //鍚姩RTC璁℃暟锛屽鏋滆绔嬪嵆鍒囨崲鍒颁綆鍔熻楋紝闇瑕佹墽琛屾鍑芥暟 } /****************************************************************************** -* 函数名称: LPTimer0Init -* 功能描述: 低功耗定时器0初始化 -* 参 数: sTime 定时中断秒时间 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: LPTimer0Init +* 鍔熻兘鎻忚堪: 浣庡姛鑰楀畾鏃跺櫒0鍒濆鍖 +* 鍙 鏁: sTime 瀹氭椂涓柇绉掓椂闂 +* 杩 鍥 鍊: 鏃 ******************************************************************************/ void LPTimer0Init(uint16_t _100ms) { @@ -321,7 +321,7 @@ void LPTimer0Init(uint16_t _100ms) stc_lptim_cfg_t stcLptCfg; DDL_ZERO_STRUCT(stcLptCfg); - ///< 使能LPTIM0 外设时钟 + ///< 浣胯兘LPTIM0 澶栬鏃堕挓 Sysctrl_SetPeripheralGate(SysctrlPeripheralLpTim0, TRUE); stcLptCfg.enPrs = LptimPrsDiv256; @@ -329,13 +329,13 @@ void LPTimer0Init(uint16_t _100ms) stcLptCfg.enGatep = LptimGatePLow; stcLptCfg.enTcksel = LptimRcl; stcLptCfg.enTogen = LptimTogEnLow; - stcLptCfg.enCt = LptimTimerFun; //警示器功能 - stcLptCfg.enMd = LptimMode1; //工作模式为模式1:无自动重装载16位计数器/定时器 - stcLptCfg.u16Arr = 0x10000 - (_100ms * 13); //预装载寄存器值 + stcLptCfg.enCt = LptimTimerFun; //璀︾ず鍣ㄥ姛鑳 + stcLptCfg.enMd = LptimMode1; //宸ヤ綔妯″紡涓烘ā寮1锛氭棤鑷姩閲嶈杞16浣嶈鏁板櫒/瀹氭椂鍣 + stcLptCfg.u16Arr = 0x10000 - (_100ms * 13); //棰勮杞藉瘎瀛樺櫒鍊 Lptim_Init(M0P_LPTIMER0, &stcLptCfg); - Lptim_ClrItStatus(M0P_LPTIMER0); //清除中断标志位 - Lptim_ConfIt(M0P_LPTIMER0, TRUE); //允许LPTIMER中断 + Lptim_ClrItStatus(M0P_LPTIMER0); //娓呴櫎涓柇鏍囧織浣 + Lptim_ConfIt(M0P_LPTIMER0, TRUE); //鍏佽LPTIMER涓柇 EnableNvic(LPTIM_0_1_IRQn, IrqLevel3, TRUE); Lptim_Cmd(M0P_LPTIMER0, TRUE); @@ -356,7 +356,7 @@ static void GPIOInit(void) DDL_ZERO_STRUCT(GpioInitStruct); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); - //未使用或引出的脚设为输入上拉 + //鏈娇鐢ㄦ垨寮曞嚭鐨勮剼璁句负杈撳叆涓婃媺 GpioInitStruct.enDir = GpioDirIn; GpioInitStruct.enPu = GpioPuEnable; @@ -376,32 +376,32 @@ static void GPIOInit(void) Gpio_Init(GpioPortF, GpioPin6, &GpioInitStruct); //end - /********************************** GPIO输出 ****************************************/ - GpioInitStruct.enDir = GpioDirOut; ///< 端口方向配置->输出 - GpioInitStruct.enDrv = GpioDrvH; ///< 端口驱动能力配置->高驱动能力 - GpioInitStruct.enPu = GpioPuDisable; ///< 端口上下拉配置->无 + /********************************** GPIO杈撳嚭 ****************************************/ + GpioInitStruct.enDir = GpioDirOut; ///< 绔彛鏂瑰悜閰嶇疆->杈撳嚭 + GpioInitStruct.enDrv = GpioDrvH; ///< 绔彛椹卞姩鑳藉姏閰嶇疆->楂橀┍鍔ㄨ兘鍔 + GpioInitStruct.enPu = GpioPuDisable; ///< 绔彛涓婁笅鎷夐厤缃->鏃 GpioInitStruct.enPd = GpioPdDisable; - GpioInitStruct.enOD = GpioOdDisable; ///< 端口开漏输出配置->开漏输出关闭 - GpioInitStruct.enCtrlMode = GpioAHB; ///< 端口输入/输出值寄存器总线控制模式配置->AHB - GpioInitStruct.bOutputVal = false; ///< 端口默认输出配置->低电平 - //< RS485控制引脚 + GpioInitStruct.enOD = GpioOdDisable; ///< 绔彛寮婕忚緭鍑洪厤缃->寮婕忚緭鍑哄叧闂 + GpioInitStruct.enCtrlMode = GpioAHB; ///< 绔彛杈撳叆/杈撳嚭鍊煎瘎瀛樺櫒鎬荤嚎鎺у埗妯″紡閰嶇疆->AHB + GpioInitStruct.bOutputVal = false; ///< 绔彛榛樿杈撳嚭閰嶇疆->浣庣數骞 + //< RS485鎺у埗寮曡剼 Gpio_Init(RS485_CTRL_PORTx,RS485_CTRL_PINx,&GpioInitStruct); - //< 激光控制引脚 + //< 婵鍏夋帶鍒跺紩鑴 Gpio_Init(LASER1_ON_OFF_PORTx,LASER1_ON_OFF_PINx,&GpioInitStruct); Gpio_Init(LASER2_ON_OFF_PORTx,LASER2_ON_OFF_PINx,&GpioInitStruct); Gpio_Init(LASER3_ON_OFF_PORTx,LASER3_ON_OFF_PINx,&GpioInitStruct); //< ADC??????? Gpio_Init(AD_ON_OFF_PORTx,AD_ON_OFF_PINx,&GpioInitStruct); - GpioInitStruct.bOutputVal = true; ///< 端口默认输出配置->高电平 + GpioInitStruct.bOutputVal = true; ///< 绔彛榛樿杈撳嚭閰嶇疆->楂樼數骞 //< LORA --> RST Gpio_Init(LORA_RST_PORTx,LORA_RST_PINx,&GpioInitStruct); //< LED_State Gpio_Init(LED_STATE_PORTx,LED_STATE_PINx,&GpioInitStruct); - /********************************** GPIO输入 ****************************************/ - GpioInitStruct.enDir = GpioDirIn; ///< 端口方向配置->输入 - GpioInitStruct.enPu = GpioPuDisable; ///< 端口上下拉配置->无 + /********************************** GPIO杈撳叆 ****************************************/ + GpioInitStruct.enDir = GpioDirIn; ///< 绔彛鏂瑰悜閰嶇疆->杈撳叆 + GpioInitStruct.enPu = GpioPuDisable; ///< 绔彛涓婁笅鎷夐厤缃->鏃 GpioInitStruct.enPd = GpioPdDisable; GpioInitStruct.enOD = GpioOdDisable; @@ -417,33 +417,33 @@ static void GPIOInit(void) Gpio_Init(MMC5983MA_INT_PORTx,MMC5983MA_INT_PINx,&GpioInitStruct); GlobalIntEnable(); } -void GlobalIntEnable(void)//全局中断使能 +void GlobalIntEnable(void)//鍏ㄥ眬涓柇浣胯兘 { EnableNvic(PORTB_IRQn, IrqLevel3, TRUE); EnableNvic(PORTC_E_IRQn, IrqLevel3, TRUE); } -void GlobalIntDisable(void)//全局中断失能 +void GlobalIntDisable(void)//鍏ㄥ眬涓柇澶辫兘 { EnableNvic(PORTB_IRQn, IrqLevel3, FALSE); EnableNvic(PORTC_E_IRQn, IrqLevel3, FALSE); } -void LORAIntEnable(void)//LORA中断使能 +void LORAIntEnable(void)//LORA涓柇浣胯兘 { Gpio_EnableIrq(LORA_DIO0_PORTx, LORA_DIO0_PINx, GpioIrqRising);//LORA_DIO0 Gpio_EnableIrq(LORA_DIO1_PORTx, LORA_DIO1_PINx, GpioIrqRising);//LORA_DIO1 } -void LORAIntDisable(void)//LORA中断失能 +void LORAIntDisable(void)//LORA涓柇澶辫兘 { Gpio_DisableIrq(LORA_DIO0_PORTx, LORA_DIO0_PINx, GpioIrqRising); Gpio_DisableIrq(LORA_DIO1_PORTx, LORA_DIO1_PINx, GpioIrqRising); } -void ACCandMMCIntEnable(void)//加速度和地磁中断使能 +void ACCandMMCIntEnable(void)//鍔犻熷害鍜屽湴纾佷腑鏂娇鑳 { Gpio_EnableIrq(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx, GpioIrqRising);//ACC_Int1 Gpio_EnableIrq(LSM6DSLTR_INT2_PORTx, LSM6DSLTR_INT2_PINx, GpioIrqRising);//ACC_Int2 Gpio_EnableIrq(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx, GpioIrqRising);//MMC_Int } -void ACCandMMCIntDisable(void)//加速度和地磁中断失能 +void ACCandMMCIntDisable(void)//鍔犻熷害鍜屽湴纾佷腑鏂け鑳 { Gpio_DisableIrq(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx, GpioIrqRising);//ACC_Int1 Gpio_DisableIrq(LSM6DSLTR_INT2_PORTx, LSM6DSLTR_INT2_PINx, GpioIrqRising);//ACC_Int2 @@ -458,31 +458,31 @@ static void SPI0Init(void) DDL_ZERO_STRUCT(GpioInitStruct); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); - /************************** SPI0配置:主机-->LORA *******************************/ + /************************** SPI0閰嶇疆:涓绘満-->LORA *******************************/ GpioInitStruct.enDir = GpioDirOut; Gpio_Init(SPI0_NSS_PORTx,SPI0_NSS_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI0_NSS_PORTx,SPI0_NSS_PINx,SPI0_NSS_AF); //配置SPI0_NSS + Gpio_SetAfMode(SPI0_NSS_PORTx,SPI0_NSS_PINx,SPI0_NSS_AF); //閰嶇疆SPI0_NSS Gpio_Init(SPI0_SCK_PORTx,SPI0_SCK_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI0_SCK_PORTx,SPI0_SCK_PINx,SPI0_SCK_AF); //配置SPI0_SCK + Gpio_SetAfMode(SPI0_SCK_PORTx,SPI0_SCK_PINx,SPI0_SCK_AF); //閰嶇疆SPI0_SCK Gpio_Init(SPI0_MOSI_PORTx,SPI0_MOSI_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI0_MOSI_PORTx,SPI0_MOSI_PINx,SPI0_MOSI_AF); //配置SPI0_MOSI + Gpio_SetAfMode(SPI0_MOSI_PORTx,SPI0_MOSI_PINx,SPI0_MOSI_AF); //閰嶇疆SPI0_MOSI - GpioInitStruct.enDir = GpioDirIn; ///< 端口方向配置->输入 + GpioInitStruct.enDir = GpioDirIn; ///< 绔彛鏂瑰悜閰嶇疆->杈撳叆 Gpio_Init(SPI0_MISO_PORTx,SPI0_MISO_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI0_MISO_PORTx, SPI0_MISO_PINx,SPI0_MISO_AF); //配置SPI0_MISO + Gpio_SetAfMode(SPI0_MISO_PORTx, SPI0_MISO_PINx,SPI0_MISO_AF); //閰嶇疆SPI0_MISO - Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,TRUE); ///< 打开SPI0外设时钟 - Reset_RstPeripheral0(ResetMskSpi0); ///<复位模块 + Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,TRUE); ///< 鎵撳紑SPI0澶栬鏃堕挓 + Reset_RstPeripheral0(ResetMskSpi0); ///<澶嶄綅妯″潡 - //SPI0模块配置:主机 - SpiInitStruct.enSpiMode = SpiMskMaster; //配置位主机模式 - SpiInitStruct.enPclkDiv = SpiClkMskDiv4; //波特率:PCLK/4 - SpiInitStruct.enCPHA = SpiMskCphasecond; //第二边沿采样 - SpiInitStruct.enCPOL = SpiMskcpolhigh; //极性为高 + //SPI0妯″潡閰嶇疆锛氫富鏈 + SpiInitStruct.enSpiMode = SpiMskMaster; //閰嶇疆浣嶄富鏈烘ā寮 + SpiInitStruct.enPclkDiv = SpiClkMskDiv4; //娉㈢壒鐜囷細PCLK/4 + SpiInitStruct.enCPHA = SpiMskCphasecond; //绗簩杈规部閲囨牱 + SpiInitStruct.enCPOL = SpiMskcpolhigh; //鏋佹т负楂 Spi_Init(M0P_SPI0, &SpiInitStruct); } @@ -494,31 +494,31 @@ static void SPI1Init(void) DDL_ZERO_STRUCT(GpioInitStruct); Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); - /************************** SPI1配置:主机-->LORA *******************************/ + /************************** SPI1閰嶇疆:涓绘満-->LORA *******************************/ GpioInitStruct.enDir = GpioDirOut; Gpio_Init(SPI1_NSS_PORTx,SPI1_NSS_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI1_NSS_PORTx,SPI1_NSS_PINx,SPI1_NSS_AF); //配置SPI1_NSS + Gpio_SetAfMode(SPI1_NSS_PORTx,SPI1_NSS_PINx,SPI1_NSS_AF); //閰嶇疆SPI1_NSS Gpio_Init(SPI1_SCK_PORTx,SPI1_SCK_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI1_SCK_PORTx,SPI1_SCK_PINx,SPI1_SCK_AF); //配置SPI1_SCK + Gpio_SetAfMode(SPI1_SCK_PORTx,SPI1_SCK_PINx,SPI1_SCK_AF); //閰嶇疆SPI1_SCK Gpio_Init(SPI1_MOSI_PORTx,SPI1_MOSI_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI1_MOSI_PORTx,SPI1_MOSI_PINx,SPI1_MOSI_AF); //配置SPI1_MOSI + Gpio_SetAfMode(SPI1_MOSI_PORTx,SPI1_MOSI_PINx,SPI1_MOSI_AF); //閰嶇疆SPI1_MOSI - GpioInitStruct.enDir = GpioDirIn; ///< 端口方向配置->输入 + GpioInitStruct.enDir = GpioDirIn; ///< 绔彛鏂瑰悜閰嶇疆->杈撳叆 Gpio_Init(SPI1_MISO_PORTx,SPI1_MISO_PINx,&GpioInitStruct); - Gpio_SetAfMode(SPI1_MISO_PORTx, SPI1_MISO_PINx,SPI1_MISO_AF); //配置SPI1_MISO + Gpio_SetAfMode(SPI1_MISO_PORTx, SPI1_MISO_PINx,SPI1_MISO_AF); //閰嶇疆SPI1_MISO - Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi1,TRUE); ///< 打开SPI0外设时钟 - Reset_RstPeripheral0(ResetMskSpi1); ///<复位模块 + Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi1,TRUE); ///< 鎵撳紑SPI0澶栬鏃堕挓 + Reset_RstPeripheral0(ResetMskSpi1); ///<澶嶄綅妯″潡 - //SPI1模块配置:主机 - SpiInitStruct.enSpiMode = SpiMskMaster; //配置位主机模式 - SpiInitStruct.enPclkDiv = SpiClkMskDiv2; //波特率:PCLK/2 - SpiInitStruct.enCPHA = SpiMskCphasecond; //第二边沿采样 - SpiInitStruct.enCPOL = SpiMskcpolhigh; //极性为高 + //SPI1妯″潡閰嶇疆锛氫富鏈 + SpiInitStruct.enSpiMode = SpiMskMaster; //閰嶇疆浣嶄富鏈烘ā寮 + SpiInitStruct.enPclkDiv = SpiClkMskDiv2; //娉㈢壒鐜囷細PCLK/2 + SpiInitStruct.enCPHA = SpiMskCphasecond; //绗簩杈规部閲囨牱 + SpiInitStruct.enCPOL = SpiMskcpolhigh; //鏋佹т负楂 Spi_Init(M0P_SPI1, &SpiInitStruct); } @@ -539,28 +539,28 @@ static void I2C0Init(void) DDL_ZERO_STRUCT(stcI2cCfg); DDL_ZERO_STRUCT(stcGpioCfg); - Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //开启GPIO时钟门控 + Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //寮鍚疓PIO鏃堕挓闂ㄦ帶 - stcGpioCfg.enDir = GpioDirOut; ///< 端口方向配置->输出 - stcGpioCfg.enOD = GpioOdEnable; ///< 开漏输出 - stcGpioCfg.enPu = GpioPuEnable; ///< 端口上拉配置->使能 - stcGpioCfg.enPd = GpioPdDisable; ///< 端口下拉配置->禁止 + stcGpioCfg.enDir = GpioDirOut; ///< 绔彛鏂瑰悜閰嶇疆->杈撳嚭 + stcGpioCfg.enOD = GpioOdEnable; ///< 寮婕忚緭鍑 + stcGpioCfg.enPu = GpioPuEnable; ///< 绔彛涓婃媺閰嶇疆->浣胯兘 + stcGpioCfg.enPd = GpioPdDisable; ///< 绔彛涓嬫媺閰嶇疆->绂佹 stcGpioCfg.bOutputVal = TRUE; - Gpio_Init(I2C0_SCL_PORTx, I2C0_SCL_PINx, &stcGpioCfg); ///< 端口初始化 + Gpio_Init(I2C0_SCL_PORTx, I2C0_SCL_PINx, &stcGpioCfg); ///< 绔彛鍒濆鍖 Gpio_SetAfMode(I2C0_SCL_PORTx, I2C0_SCL_PINx, I2C0_SCL_AF); Gpio_Init(I2C0_SDA_PORTx, I2C0_SDA_PINx, &stcGpioCfg); Gpio_SetAfMode(I2C0_SDA_PORTx, I2C0_SDA_PINx, I2C0_SDA_AF); - Sysctrl_SetPeripheralGate(SysctrlPeripheralI2c0,TRUE); ///< 开启I2C0时钟门控 + Sysctrl_SetPeripheralGate(SysctrlPeripheralI2c0,TRUE); ///< 寮鍚疘2C0鏃堕挓闂ㄦ帶 - stcI2cCfg.u32Pclk = Sysctrl_GetPClkFreq(); ///< 获取PCLK时钟 + stcI2cCfg.u32Pclk = Sysctrl_GetPClkFreq(); ///< 鑾峰彇PCLK鏃堕挓 stcI2cCfg.u32Baud = 400000; ///< 1MHz - stcI2cCfg.enMode = I2cMasterMode; ///< 主机模式 - stcI2cCfg.u8SlaveAddr = 0xD5; ///< 从地址,主模式无效 - stcI2cCfg.bGc = FALSE; ///< 广播地址应答使能关闭 - I2C_Init(M0P_I2C0, &stcI2cCfg); ///< 模块初始化 + stcI2cCfg.enMode = I2cMasterMode; ///< 涓绘満妯″紡 + stcI2cCfg.u8SlaveAddr = 0xD5; ///< 浠庡湴鍧锛屼富妯″紡鏃犳晥 + stcI2cCfg.bGc = FALSE; ///< 骞挎挱鍦板潃搴旂瓟浣胯兘鍏抽棴 + I2C_Init(M0P_I2C0, &stcI2cCfg); ///< 妯″潡鍒濆鍖 } static void I2C1Init(void) @@ -571,37 +571,37 @@ static void I2C1Init(void) DDL_ZERO_STRUCT(stcI2cCfg); DDL_ZERO_STRUCT(stcGpioCfg); - Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //开启GPIO时钟门控 + Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE); //寮鍚疓PIO鏃堕挓闂ㄦ帶 - stcGpioCfg.enDir = GpioDirOut; ///< 端口方向配置->输出 - stcGpioCfg.enOD = GpioOdEnable; ///< 开漏输出 - stcGpioCfg.enPu = GpioPuEnable; ///< 端口上拉配置->使能 - stcGpioCfg.enPd = GpioPdDisable; ///< 端口下拉配置->禁止 + stcGpioCfg.enDir = GpioDirOut; ///< 绔彛鏂瑰悜閰嶇疆->杈撳嚭 + stcGpioCfg.enOD = GpioOdEnable; ///< 寮婕忚緭鍑 + stcGpioCfg.enPu = GpioPuEnable; ///< 绔彛涓婃媺閰嶇疆->浣胯兘 + stcGpioCfg.enPd = GpioPdDisable; ///< 绔彛涓嬫媺閰嶇疆->绂佹 stcGpioCfg.bOutputVal = TRUE; - Gpio_Init(I2C1_SCL_PORTx, I2C1_SCL_PINx, &stcGpioCfg); ///< 端口初始化 + Gpio_Init(I2C1_SCL_PORTx, I2C1_SCL_PINx, &stcGpioCfg); ///< 绔彛鍒濆鍖 Gpio_SetAfMode(I2C1_SCL_PORTx, I2C1_SCL_PINx, I2C1_SCL_AF); Gpio_Init(I2C1_SDA_PORTx, I2C1_SDA_PINx, &stcGpioCfg); Gpio_SetAfMode(I2C1_SDA_PORTx, I2C1_SDA_PINx, I2C1_SDA_AF); - Sysctrl_SetPeripheralGate(SysctrlPeripheralI2c1,TRUE); ///< 开启I2C1时钟门控 + Sysctrl_SetPeripheralGate(SysctrlPeripheralI2c1,TRUE); ///< 寮鍚疘2C1鏃堕挓闂ㄦ帶 - stcI2cCfg.u32Pclk = Sysctrl_GetPClkFreq(); ///< 获取PCLK时钟 + stcI2cCfg.u32Pclk = Sysctrl_GetPClkFreq(); ///< 鑾峰彇PCLK鏃堕挓 stcI2cCfg.u32Baud = 400000; ///< 1MHz - stcI2cCfg.enMode = I2cMasterMode; ///< 主机模式 - stcI2cCfg.u8SlaveAddr = 0xD5; ///< 从地址,主模式无效 - stcI2cCfg.bGc = FALSE; ///< 广播地址应答使能关闭 - I2C_Init(M0P_I2C1, &stcI2cCfg); ///< 模块初始化 + stcI2cCfg.enMode = I2cMasterMode; ///< 涓绘満妯″紡 + stcI2cCfg.u8SlaveAddr = 0xD5; ///< 浠庡湴鍧锛屼富妯″紡鏃犳晥 + stcI2cCfg.bGc = FALSE; ///< 骞挎挱鍦板潃搴旂瓟浣胯兘鍏抽棴 + I2C_Init(M0P_I2C1, &stcI2cCfg); ///< 妯″潡鍒濆鍖 } static void WdtInit(void) { #if (USE_WDT == 1) - ///< 开启WDT外设时钟 + ///< 寮鍚疻DT澶栬鏃堕挓 Sysctrl_SetPeripheralGate(SysctrlPeripheralWdt,TRUE); - ///< WDT 初始化 + ///< WDT 鍒濆鍖 Wdt_Init(WdtResetEn, WdtT52s4); Wdt_Start(); #endif @@ -734,7 +734,7 @@ uint32_t GetSysTick(void) { return SysTickCnt; } -void delay_us(uint32_t uS)//24MHz一个nop延时0.5us,12MHz延时1us +void delay_us(uint32_t uS)//24MHz涓涓猲op寤舵椂0.5us锛12MHz寤舵椂1us { uS *= 2; while(uS--) @@ -779,24 +779,24 @@ void PortB_IRQHandler(void) void PortC_IRQHandler(void) { - //加速度INT1 + //鍔犻熷害INT1 if(TRUE == Gpio_GetIrqStatus(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx)) { Gpio_ClearIrq(LSM6DSLTR_INT1_PORTx, LSM6DSLTR_INT1_PINx); Lsm6dsInt1CallBack(); } - //地磁INT + //鍦扮INT if(TRUE == Gpio_GetIrqStatus(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx)) { Gpio_ClearIrq(MMC5983MA_INT_PORTx, MMC5983MA_INT_PINx); MMC5983IntCallBack(); } } -///CTRL &= ~SysTick_CTRL_ENABLE_Msk; //< LORA - Sx1276LoRaSleep();//Lora睡眠 - LORAIntDisable();//关闭LORA中断 + Sx1276LoRaSleep();//Lora鐫$湢 + LORAIntDisable();//鍏抽棴LORA涓柇 - ACCandMMCIntDisable();//关闭加速度和地磁中断 + ACCandMMCIntDisable();//鍏抽棴鍔犻熷害鍜屽湴纾佷腑鏂 #if (USE_VBAT_AD == 1)//< AD AD_OFF(); Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, TRUE); Sysctrl_ClkSourceEnable(SysctrlClkPLL,FALSE); - Bgr_BgrDisable(); ///< 关闭BGR + Bgr_BgrDisable(); ///< 鍏抽棴BGR Sysctrl_SetPeripheralGate(SysctrlPeripheralAdcBgr, FALSE); - Adc_SGL_Stop();//关闭单次采样 + Adc_SGL_Stop();//鍏抽棴鍗曟閲囨牱 #endif #if (USE_SPI0 == 1) - Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,FALSE);//关闭SPI0外设时钟 + Sysctrl_SetPeripheralGate(SysctrlPeripheralSpi0,FALSE);//鍏抽棴SPI0澶栬鏃堕挓 #endif #if (USE_UART0 == 1) EnableNvic(UART0_2_IRQn, IrqLevel3, false); - Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,FALSE); //关闭UART0时钟 + Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,FALSE); //鍏抽棴UART0鏃堕挓 #endif DeepSleepGPIOCfg(); @@ -901,9 +901,9 @@ void WakeUpInit(void) WdtInit(); #endif - LORAIntEnable();//开启LORA中断 - Sx1276LoRaWakeup();//LORA唤醒 - ACCandMMCIntEnable();//开启加速度和地磁中断 + LORAIntEnable();//寮鍚疞ORA涓柇 + Sx1276LoRaWakeup();//LORA鍞ら啋 + ACCandMMCIntEnable();//寮鍚姞閫熷害鍜屽湴纾佷腑鏂 SysTick_Config(SystemCoreClock/1000); } diff --git a/source/src/main.c b/source/src/main.c index 1bf9684..2aad783 100644 --- a/source/src/main.c +++ b/source/src/main.c @@ -1,4 +1,4 @@ - +锘 /****************************************************************************** * Include files ******************************************************************************/ @@ -20,17 +20,17 @@ extern uint32_t CommWay; extern uint32_t DeviceSign; extern uint32_t AddNumber; -extern uint8_t LocalMAC[6]; //本机MAC地址 -extern uint8_t GatewayMAC[6]; //网关MAC地址,注册时全为0 -extern uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //本机数据包 //本机数据包 +extern uint8_t LocalMAC[6]; //鏈満MAC鍦板潃 +extern uint8_t GatewayMAC[6]; //缃戝叧MAC鍦板潃锛屾敞鍐屾椂鍏ㄤ负0 +extern uint8_t LocalDataPack[sizeof(SGCP.DevData.LaserTracing)]; //鏈満鏁版嵁鍖 //鏈満鏁版嵁鍖 bool MainDispEn = true; bool DataDispEn = true; /***************************************************************************************** -* 函数名称: MainDBGOnOff -* 功能描述: 主调试信息开关函数 -* 参 数: OnOff,开关 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: MainDBGOnOff +* 鍔熻兘鎻忚堪: 涓昏皟璇曚俊鎭紑鍏冲嚱鏁 +* 鍙 鏁: OnOff,寮鍏 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void MainDBGOnOff(bool OnOff) { @@ -41,10 +41,10 @@ void MainDBGOnOff(bool OnOff) DBG_LOG("\r\nMain Display Disable!\r\n\r\n"); } /***************************************************************************************** -* 函数名称: DataDBGOnOff -* 功能描述: 数据信息开关函数 -* 参 数: OnOff,开关 -* 返 回 值: 无 +* 鍑芥暟鍚嶇О: DataDBGOnOff +* 鍔熻兘鎻忚堪: 鏁版嵁淇℃伅寮鍏冲嚱鏁 +* 鍙 鏁: OnOff,寮鍏 +* 杩 鍥 鍊: 鏃 *****************************************************************************************/ void DataDBGOnOff(bool OnOff) { @@ -82,17 +82,17 @@ static void AppInit(void) LocalMAC[i] = *((volatile const uint8_t *)(0x00002800 + i)); } memcpy(&App.Para.BLPara.DevMac, &LocalMAC[0], 6); - LocalType = (App.Para.BLPara.DevMac[0] | (App.Para.BLPara.DevMac[1] << 8)); //本机设备类型 - CommWay = App.Para.BLPara.DevMac[2]; //本机通讯方式 - DeviceSign = App.Para.BLPara.DevMac[3] & 0x80; //本机设备标志 - AddNumber = ((App.Para.BLPara.DevMac[3] << 16)+ (App.Para.BLPara.DevMac[4] << 8) + App.Para.BLPara.DevMac[5]) - 0x800000; //本机地址编号,数字部分对应唯一地址编号 + LocalType = (App.Para.BLPara.DevMac[0] | (App.Para.BLPara.DevMac[1] << 8)); //鏈満璁惧绫诲瀷 + CommWay = App.Para.BLPara.DevMac[2]; //鏈満閫氳鏂瑰紡 + DeviceSign = App.Para.BLPara.DevMac[3] & 0x80; //鏈満璁惧鏍囧織 + AddNumber = ((App.Para.BLPara.DevMac[3] << 16)+ (App.Para.BLPara.DevMac[4] << 8) + App.Para.BLPara.DevMac[5]) - 0x800000; //鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 #else - LocalType = LASER_TRACING; //本机设备类型 - CommWay = LORA; //本机通讯方式 - DeviceSign = MASTER; //本机设备标志 - AddNumber = 0x000023 + DeviceSign;//本机地址编号,数字部分对应唯一地址编号 + LocalType = LASER_TRACING; //鏈満璁惧绫诲瀷 + CommWay = LORA; //鏈満閫氳鏂瑰紡 + DeviceSign = MASTER; //鏈満璁惧鏍囧織 + AddNumber = 0x000023 + DeviceSign;//鏈満鍦板潃缂栧彿锛屾暟瀛楅儴鍒嗗搴斿敮涓鍦板潃缂栧彿 App.Para.BLPara.LoraFreq = CH0; - LocalMAC[0] = LocalType & 0xFF; //本机MAC地址 + LocalMAC[0] = LocalType & 0xFF; //鏈満MAC鍦板潃 LocalMAC[1] = (LocalType >> 8) & 0xFF; LocalMAC[2] = CommWay; LocalMAC[3] = (AddNumber >> 16) & 0xFF; @@ -104,7 +104,7 @@ static void AppInit(void) if(App.Para.FactoryFlag != 0x00) { App.Para.FactoryFlag = 0x00; - /*校准参数初始化*/ + /*鏍″噯鍙傛暟鍒濆鍖*/ App.Para.CaliPara.PitchZero = 0; App.Para.CaliPara.RollZero = 0; App.Para.CaliPara.YawZero = 0; @@ -137,7 +137,7 @@ static void AppInit(void) if(App.Para.BLPara.LoraFreq < 410000000 || App.Para.BLPara.LoraFreq > 525000000) App.Para.BLPara.LoraFreq = CH0; App.Para.Lora.FreqCent = App.Para.BLPara.LoraFreq; - SX1276LoRaWriteFreq(App.Para.Lora.FreqCent); //Lora频率:433100000ul + 200000*N + SX1276LoRaWriteFreq(App.Para.Lora.FreqCent); //Lora棰戠巼:433100000ul + 200000*N if(App.Para.Rs485Ch1.Addr > 16 || App.Para.Rs485Ch1.Addr < 1){ App.Para.Rs485Ch1.Addr = 1; @@ -159,10 +159,10 @@ static void AppInit(void) } SAVE_APP_PARA((uint32_t *)&App.Para); - LpUart0Init(App.Para.Rs485Ch1.BaudRate);//低功耗串口初始化 + LpUart0Init(App.Para.Rs485Ch1.BaudRate);//浣庡姛鑰椾覆鍙e垵濮嬪寲 LORAIntEnable(); - LoraInit(); //< LORA芯片初始化 + LoraInit(); //< LORA鑺墖鍒濆鍖 FeedDog(); Lsm6dslInit(); @@ -173,7 +173,7 @@ static void AppInit(void) LPTimer0_OFF(); - uint32_t seed = 0;//< 随机数初始化 + uint32_t seed = 0;//< 闅忔満鏁板垵濮嬪寲 seed = seed + LocalMAC[2]; seed = (seed << 8) + LocalMAC[3]; seed = (seed << 8) + LocalMAC[4]; @@ -194,10 +194,10 @@ static void AppInit(void) App.LoginFlag = false; App.Login_RTC = false; App.Login_LPTimer0 = true; - //LPTimer0_ON((App.Nonce % 1200) + 300);//定时30s+随机2分钟,最小间隙100ms - LPTimer0_ON(50);//5秒后注册 - MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); - + //LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms + LPTimer0_ON(50);//5绉掑悗娉ㄥ唽 + SGCP.LaserTimerMinutes = 10; //婵鍏夊畾鏃跺叧闂粯璁10鍒嗛挓 + SGCP.LaserTimerCount = 0; App.Upload45S10SCount = 0; App.UploadFlag = false; App.Upload_LPTimer0 = false; @@ -282,7 +282,7 @@ static void ReadDataLoopHandler(void) RollDiff = App.ConvertedData.Roll - App.Para.CaliPara.RollZero; if((PitchDiff > ERINTERVAL_VPT) || (RollDiff > ERINTERVAL_VPT)) { - //触发紧急上报 + //瑙﹀彂绱фヤ笂鎶 App.ERFlag = true; DATA_DBG_LOG("PitchDiff=%04d, PitchDiff=%04d\r\n", PitchDiff,RollDiff); DATA_DBG_LOG("Start emergency reporting!\r\n"); @@ -300,7 +300,7 @@ static void ReadDataLoopHandler(void) SGCP.DevData.LaserTracing.MasterDev.BatLevel = 0x00; #endif #if (SGCP_SELECT == 1 || SGCP_SELECT == 2) - SX1276LoCalcRssiSnr(&SGCP.DevData.LaserTracing.MasterDev.RSSI, &SGCP.DevData.LaserTracing.MasterDev.Nsr);//获取信号强度 + SX1276LoCalcRssiSnr(&SGCP.DevData.LaserTracing.MasterDev.RSSI, &SGCP.DevData.LaserTracing.MasterDev.Nsr);//鑾峰彇淇″彿寮哄害 #else SGCP.DevData.LaserTracing.MasterDev.RSSI = 0x00; SGCP.DevData.LaserTracing.MasterDev.Nsr = 0x00; @@ -308,7 +308,7 @@ static void ReadDataLoopHandler(void) memcpy(LocalDataPack, &SGCP.DevData.LaserTracing, sizeof(LocalDataPack)); DATA_DBG_LOG("<------------ Sensor Data Upda End ------------> \r\n"); - //App.RDStatus = READDATA_STATUS_UPDAING;//持续工作 + //App.RDStatus = READDATA_STATUS_UPDAING;//鎸佺画宸ヤ綔 App.RDStatus = READDATA_STATUS_IDLE; App.UpdateOk = true; break;} @@ -333,7 +333,7 @@ static void AppLoopHandler(void) case APP_STATUS_ON:{ if(App.TD1mSDelayCnt <= 0){ - App.TD1mSDelayCnt = 300;//唤醒后待机时间 + App.TD1mSDelayCnt = 300;//鍞ら啋鍚庡緟鏈烘椂闂 App.Status = APP_STATUS_ACTION; } break;} @@ -348,15 +348,15 @@ static void AppLoopHandler(void) if(SGCP.InStatus != IN_STATUS_IDLE){ break; } - else if(SGCP.LoginOk == false && App.LoginFlag == true && SGCP.GWStatus == GW_STATUS_IDLE)//设备注册 + else if(SGCP.LoginOk == false && App.LoginFlag == true && SGCP.GWStatus == GW_STATUS_IDLE)//璁惧娉ㄥ唽 { PrintfMess(); App.LoginFlag = false; - LPTimer0_OFF();//关闭低功耗定时器 - SGCP.GWStatus = GW_STATUS_LOGIN;//注册 + LPTimer0_OFF();//鍏抽棴浣庡姛鑰楀畾鏃跺櫒 + SGCP.GWStatus = GW_STATUS_LOGIN;//娉ㄥ唽 App.Status = APP_STATUS_WAIT_LOGIN; } - else if(SGCP.TimingAcquisition == true && App.RDStatus == READDATA_STATUS_IDLE)//设备数据获取 + else if(SGCP.TimingAcquisition == true && App.RDStatus == READDATA_STATUS_IDLE)//璁惧鏁版嵁鑾峰彇 { PrintfMess(); SGCP.TimingAcquisition = false; @@ -368,23 +368,28 @@ static void AppLoopHandler(void) { PrintfMess(); App.UploadFlag = false; - LPTimer0_OFF();//关闭低功耗定时器 - SGCP.GWStatus = GW_STATUS_UPLOAD_SENSOR;//上传 + LPTimer0_OFF();//鍏抽棴浣庡姛鑰楀畾鏃跺櫒 + SGCP.GWStatus = GW_STATUS_UPLOAD_SENSOR;//涓婁紶 App.Status = APP_STATUS_WAIT_UPLOAD; } + else if(SGCP.LaserOnOff == true && SGCP.LaserTimerCount == 0 && SGCP.GWStatus == GW_STATUS_IDLE) + { + SGCP.LaserOnOff = false; + SGCP.GWStatus = GW_STATUS_LASER_STARES; + } else if(App.RDStatus == READDATA_STATUS_IDLE && SGCP.GWStatus == GW_STATUS_IDLE && SGCP.InStatus == IN_STATUS_IDLE && SGCP.TimingAcquisition == false && App.TD1mSDelayCnt == 0 && App.ReadData1mSDelayCnt == 0 - && SGCP.LaserOnOff == false) + && SGCP.LaserOnOff == false + && App.AttTestMode == false) { - //App.Status = APP_STATUS_ACTION;//持续工作 + //App.Status = APP_STATUS_ACTION; App.Status = APP_STATUS_OFF; } break;} - case APP_STATUS_WAIT_LOGIN:{ if(SGCP.LoginMess == true) { @@ -398,14 +403,14 @@ static void AppLoopHandler(void) MAIN_DBG_LOG("Login RTC Open\r\n"); App.Login2Min30SCount = 0; App.Login30MinCount = 0; - App.Login_RTC = true;//启动30分注册定时器 + App.Login_RTC = true;//鍚姩30鍒嗘敞鍐屽畾鏃跺櫒 } else { PrintfMess(); App.Login_LPTimer0 = true; - LPTimer0_ON((App.Nonce % 1200) + 300);//定时30s+随机2分钟,最小间隙100ms - //LPTimer0_ON(100);//定时10s + LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms + //LPTimer0_ON(100);//瀹氭椂10s MAIN_DBG_LOG("Number of registration failures:%d\r\n",App.Login2Min30SCount); MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } @@ -443,8 +448,8 @@ static void AppLoopHandler(void) { PrintfMess(); App.Upload_LPTimer0 = true; - LPTimer0_ON((App.Nonce % 100) + 450);//随机延时100~10000ms+45秒后重新发送 - //LPTimer0_ON(100);//定时10s + LPTimer0_ON((App.Nonce % 100) + 450);//闅忔満寤舵椂100~10000ms+45绉掑悗閲嶆柊鍙戦 + //LPTimer0_ON(100);//瀹氭椂10s MAIN_DBG_LOG("Number of failed uploads:%d\r\n",App.Upload45S10SCount); MAIN_DBG_LOG("Upload LPTimer0 Open\r\n"); } @@ -468,6 +473,8 @@ static void App1mSRoutine(void) if(App.ReadData1mSDelayCnt > 0) App.ReadData1mSDelayCnt--; App.FeedDogDlyCnt++; + if(App.AttTestMode == true && App.AttTestCnt > 0) + App.AttTestCnt--; } void FeedDogHandler(void) @@ -480,7 +487,7 @@ void FeedDogHandler(void) void SystemResetHandler(void) { - //系统定时重启 + //绯荤粺瀹氭椂閲嶅惎 if(App.SysResetTimeCnt > SYSTEM_TIMING_LOGIN) { delay_ms(5); SystemReset(); @@ -500,7 +507,7 @@ void SystemResetHandler(void) int32_t main(void) { BspInit(); - delay_ms(3000);//上电延时,等待从设备启动 + delay_ms(3000);//涓婄數寤舵椂锛岀瓑寰呬粠璁惧鍚姩 AppInit(); DBG_LOG("\r\n\r\n"); @@ -530,10 +537,29 @@ int32_t main(void) GwRevLoopHandler(); InRevLoopHandler(); AppLoopHandler(); + +#if(USE_DEBUG == 1) + if(App.AttTestMode == true) + { + if(App.AttTestCnt == 0) + { + App.AttTestCnt = 200; + SGCP.TimingAcquisition = true; + } + if(App.UpdateOk == true) + { + App.UpdateOk = false; + DBG_LOG("Pitch:%.1f Roll:%.1f Yaw:%.1f\r\n", + App.ConvertedData.Pitch / 10.0, + App.ConvertedData.Roll / 10.0, + App.ConvertedData.Yaw / 10.0); + } + } +#endif } } /******************************************************************************* - * 中断回调函数 + * 涓柇鍥炶皟鍑芥暟 ******************************************************************************/ void SysTick_CallBack(void) { @@ -546,20 +572,20 @@ void SysTick_CallBack(void) void RtcIRQHander(void) { - //SGCP.TimingAcquisition = true; //30S更新一次数据 + //SGCP.TimingAcquisition = true; //30S鏇存柊涓娆℃暟鎹 if(SGCP.LoginOk == true) { App.RepeLoginCount++; if(App.RepeLoginCount >= SYSTEM_TIMING_LOGIN){ MAIN_DBG_LOG("24h Repetition Login\r\n"); App.RepeLoginCount = 0; - SGCP.LoginOk = false;//24h重复注册 + SGCP.LoginOk = false;//24h閲嶅娉ㄥ唽 App.Login2Min30SCount = 0; App.Login30MinCount = 0; - App.Login_RTC = false;//关闭30分注册定时器 + App.Login_RTC = false;//鍏抽棴30鍒嗘敞鍐屽畾鏃跺櫒 App.Login_LPTimer0 = true; - LPTimer0_ON((App.Nonce % 1200) + 300);//定时30s+随机2分钟,最小间隙100ms + LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } @@ -567,7 +593,7 @@ void RtcIRQHander(void) if(App.Coll_N >= App.Para.Layout.CollectTime) { App.Coll_N = 0; - SGCP.TimingAcquisition = true; //定时更新数据 + SGCP.TimingAcquisition = true; //瀹氭椂鏇存柊鏁版嵁 } if(App.ERFlag == true) @@ -583,7 +609,7 @@ void RtcIRQHander(void) { App.ERTime_N = 0; App.ERFlag = false; - SGCP.MasterCaliOk = true;//紧急上报时间结束,重新校准参数 + SGCP.MasterCaliOk = true;//绱фヤ笂鎶ユ椂闂寸粨鏉燂紝閲嶆柊鏍″噯鍙傛暟 } } else{ @@ -599,19 +625,24 @@ void RtcIRQHander(void) if(App.Login_RTC == true) { App.Login30MinCount++; - if(App.Login30MinCount >= ERR_TIMING_LOGIN)//30分钟重置注册错误信息 + if(App.Login30MinCount >= ERR_TIMING_LOGIN)//30鍒嗛挓閲嶇疆娉ㄥ唽閿欒淇℃伅 { PrintfMess(); App.Login30MinCount = 0; - App.Login_RTC = false;//关闭30分注册定时器 + App.Login_RTC = false;//鍏抽棴30鍒嗘敞鍐屽畾鏃跺櫒 MAIN_DBG_LOG("Login RTC Close\r\n"); App.Login_LPTimer0 = true; - LPTimer0_ON((App.Nonce % 1200) + 300);//定时30s+随机2分钟,最小间隙100ms - //LPTimer0_ON(100);//定时10s + LPTimer0_ON((App.Nonce % 1200) + 300);//瀹氭椂30s+闅忔満2鍒嗛挓锛屾渶灏忛棿闅100ms + //LPTimer0_ON(100);//瀹氭椂10s MAIN_DBG_LOG("Login LPTimer0 Open\r\n"); } } + + if(SGCP.LaserOnOff == true && SGCP.LaserTimerCount > 0) + { + SGCP.LaserTimerCount--; + } } void LPTimer0IRQHander(void) {