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

1. 激光定时自动关闭:默认10分钟,laser on启动计时,超时自动关并上报
2. laser time <min>可配置定时分钟数,0=关闭定时
3. att on/off持续输出姿态角(Pitch/Roll/Yaw),不注册不低功耗
4. 20个源文件从GB2312编码转为UTF-8 with BOM
This commit is contained in:
2026-07-20 17:04:48 +08:00
parent 70758b1c06
commit 72844ff821
20 changed files with 1388 additions and 1260 deletions
+11 -11
View File
@@ -1,4 +1,4 @@
#ifndef __ALGORITHM_H
#ifndef __ALGORITHM_H
#define __ALGORITHM_H
#include <math.h>
@@ -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);
+124 -122
View File
@@ -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,读取数据指令or上传数据指令
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; //子设备串口接收超时计数
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地址(主设备的MAC永远排在最前面)
bool SubsetMACOk; //在线子设备MAC获取成功标志位
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;
+5 -5
View File
@@ -1,4 +1,4 @@
#ifndef __UPDATE_H
#ifndef __UPDATE_H
#define __UPDATE_H
#include <stdint.h>
@@ -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
+115 -115
View File
@@ -1,4 +1,4 @@
#ifndef _BSP_H
#ifndef _BSP_H
#define _BSP_H
#include <stdint.h>
@@ -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为LPUART0_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为LPUART0_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为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_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为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_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为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_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为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_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为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_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为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_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为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_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为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_AF GpioAf1
//< I2C0
#define I2C0_SCL_PORTx GpioPortF //SCL的GPIO通道
#define I2C0_SCL_PINx GpioPin1 //SCL的通道位
#define I2C0_SCL_PORTx GpioPortF //SCL的GPIO通道
#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的GPIO通道
#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的GPIO通道
#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的GPIO通道
#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为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拉低接收
//<<---------------------------- 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为DIO0
#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为DIO0
#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为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复位脚拉低
//<<---------------------------- 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为ACC_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为ACC_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为MMC_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)
+39 -37
View File
@@ -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;