Files
CHJ/user/Main/MainCore.h
2026-03-20 21:16:58 +08:00

240 lines
10 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************************************************
** 全局常数与子程序定义头文件
**
** Copyright (c) Siargo, Ltd. 2010
** All Rights Reserved.
**
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __MainCore_H__
#define __MainCore_H__
#include "../User/Main/ConstDefine.h"
//使用中中断优先级配置
//#define IRQ_PRIORITY_SYSTICK (0x04) // SysTick 中断优先级,调用内核函数SysTick_Config时默认是4这里先不做更改
#define IRQ_PRIORITY_RTC (0x0A) // RTC 中断优先级,中等优先级
#define IRQ_PRIORITY_RTC_ALARM (0x08) // RTC 中断优先级,中等优先级
#define IRQ_PRIORITY_TIMER1 (0x06) // TIMER1 中断优先级,较高优先级
#define IRQ_PRIORITY_TIMER2 (0x07) // TIMER2 中断优先级,中等偏高优先级
#define IRQ_PRIORITY_DMA (0x06)
#define IRQ_PRIORITY_USART1 (0x05)
#define IRQ_PRIORITY_ADC (0x04)
//#define IRQ_PRIORITY_EXTI0 (0x0F)
typedef struct
{
u16 I2CHandle: 1; // 0
u16 DisplayHandle: 1; // 1
u16 FRHandle: 1; // 2
u16 KeyHandle: 1; // 3
u16 TempHandle: 1; // 4
u16 SaveHandle: 1; // 5
u16 WriteHandle: 1; // 6
} __SystemProcess_Bit_TypeDef;
typedef union
{
__SystemProcess_Bit_TypeDef Bit;
u16 Word;
u8 Byte[2];
}__SystemProcess_Union_TypeDef;
typedef struct
{
u16 ExtPowerInput: 1; // 0 外部电源输入
u16 FactoryTestMode: 1; // 1 工厂测试模式
u16 ZeroCalib: 1; // 2 零点高低温标定模式
u16 CalibMode: 1; // 3 校准模式
u16 DebugMode: 1; // 4 调试模式
u16 TurnOffSystem: 1; // 5 关闭系统
u16 ComModeOperate: 1; // 6 串口操作模式
u16 DigitOutput: 1; // 7 允许数据输出
u16 IntCalibMode: 1; // 8 内部标定模式
u16 LowCalibEnd : 1; // 9 低温标定完成标志
u16 HighCalibEnd : 1; // 10 高温标定完成标志
u16 PreCalibEnd : 1; // 11 校准前零点等参数写入完成标志
} __System_Status_Bit_TypeDef;
typedef union
{
__System_Status_Bit_TypeDef Bit;
u16 Word;
u8 Byte[2];
}__SystemState_Union_TypeDef;
typedef struct
{
u16 ZeroCalib: 1; // 0
u16 DebugMode: 1; // 1
u16 CalibMode: 1; // 2
} __HW_Switch_BIT_TypeDef;
typedef union
{
__HW_Switch_BIT_TypeDef Bit;
u16 Word;
u8 Byte[2];
}__HWSwitch_Union_TypeDef;
typedef struct
{
u16 SampledOver: 1; // 0
u16 ReverseFlow: 1; // 1
u16 EnableCheck: 1; // 2
u16 EnableCheckCorr: 1; // 3
u16 InChecking: 1; // 4
u16 EnableSaveData: 1; // 5
u16 EnableSaveDateAcc: 1; // 6
u16 EnableSaveHistoryData: 1; // 7
u16 EnableSaveRTC: 1; // 8
u16 EnableTempTest: 1; // 9
u16 EnableTempInit: 1; // 10
u16 KeyPressed: 1; // 11
u16 PulseOperate: 1; // 12
u16 ReadParameterOK: 1; // 13
u16 MainTimerOut: 1; // 13
u16 ProcessTimerOut: 1; // 13
} __Hardware_Status_Bit_TypeDef;
typedef struct
{
u16 NoDisplay: 1; // 0
u16 FlashUpdate: 1; // 1
u16 InitUpdate: 1; // 2
u16 NormalUpdate: 1; // 3
u16 NeedForInit: 1; // 4
} __Display_Status_Bit_TypeDef;
//**********************************************************************************************
//extern u16 MAPBuffer1,MAPBuffer2,MAPBuffer3,MAPBuffer4,MAPBuffer5,MAPBuffer6,MAPBuffer7,MAPBuffer8;
//extern u16 MAPBuffer9,MAPBuffer10,MAPBuffer11,MAPBuffer12,MAPBuffer13,MAPBuffer14,MAPBuffer15,MAPBuffer16;
//extern u16 MAPBuffer17,MAPBuffer18,MAPBuffer19,MAPBuffer20,MAPBuffer21,MAPBuffer22,MAPBuffer23,MAPBuffer24;
//extern u16 MAPBuffer25,MAPBuffer26,MAPBuffer27,MAPBuffer28,MAPBuffer29,MAPBuffer30,MAPBuffer31,MAPBuffer32;
//extern u16 MAPBuffer33,MAPBuffer34,MAPBuffer35,MAPBuffer36,MAPBuffer37,MAPBuffer38,MAPBuffer39,MAPBuffer40;
//extern u16 MAPBuffer41,MAPBuffer42,MAPBuffer43,MAPBuffer44,MAPBuffer45,MAPBuffer46,MAPBuffer47,MAPBuffer48;
// 0x30~0x7f
//extern u8 meterSN[12]; // 10996;
//extern u16 alarmState,alarmState1,alarmState2,alarmState3; // 10988;
//extern u32 flowRate;
//extern s32 flowAccumulationInteger;
//extern u16 flowAccumulationDecimal;
//extern s16 PCBTemperature,GasTemperature;
//extern s32 GASPressure;
//extern u16 batteryCY,batteryVoltage,batteryDay,batteryRDay,ComBatteryCY,ComBatteryVoltage,ComBatteryDay;
//extern u16 ComBatteryRDay,useMinte;
//extern u32 useHour;
//extern u16 VHHParameter; //10936; // 实时识别系数差值
//extern s64 flowAccumulationHex; //10924; // 实时识别系数差值
////==============================================================================
//extern u16 softCRCCode,softVersion; //10848; // 软件版本
//==============================================================================
// 0x80~0xf0
//extern u16 protocol,localAddress,baudRate;
//extern u32 minFlowRate,maxFlowRate,minAnalogOutput,maxAnalogOutput;
//extern u16 GDCFactor,filterTime,responseTime,offsetGas,offsetGasA,flowUnit,VHHParameterAir,VHHParameterScale;
//extern s16 factoryUnitPerPulse;
//extern u16 PulseLevel,samplingTiming;
//extern u32 alarmAcc,alarmUpperFlowRate,alarmLowerFlowRate;
//extern u16 alarmFunction,alarmOutDelay,uartDecimalPoint,historyPeriod;
//extern u32 reverseFlowRateMin,reverseFlowRateMax;
//extern u16 I2CAddr,I2CCrcMod,timingTxdStart,timingTxdLen,timingTxdTime,pressureOffset;
//extern u32 keyPassWord;
//extern u16 density,densityFSParameter,minLeakFlowRate,maxLeakFlowRate,leakDetectTime,GDCFactorAType;
////==============================================================================
//// 0XF0~0XFF: write only (功能码)
//extern u16 CMDCalOffset,CMDClrRecord,CMDComPassword;
////==============================================================================
//extern u16 MAPPoint1,MAPPoint2,MAPPoint3,MAPPoint4,MAPPoint5,MAPPoint6,MAPPoint7,MAPPoint8;
//extern u16 MAPPoint9,MAPPoint10,MAPPoint11,MAPPoint12,MAPPoint13,MAPPoint14,MAPPoint15,MAPPoint16;
//extern u16 MAPPoint17,MAPPoint18,MAPPoint19,MAPPoint20,MAPPoint21,MAPPoint22,MAPPoint23,MAPPoint24;
//extern u16 MAPPoint25,MAPPoint26,MAPPoint27,MAPPoint28,MAPPoint29,MAPPoint30,MAPPoint31,MAPPoint32;
//extern u16 MAPPoint33,MAPPoint34,MAPPoint35,MAPPoint36,MAPPoint37,MAPPoint38,MAPPoint39,MAPPoint40;
//extern u16 MAPPoint41,MAPPoint42,MAPPoint43,MAPPoint44,MAPPoint45,MAPPoint46,MAPPoint47,MAPPoint48;
//------------------------------------------------------------------------------
//*****************************************************************************
//for modbus >16bit register define
extern u32 flowRate,flowAccumulationInteger;
extern s32 GASPressure;
extern u64 flowAccumulationHex;
extern u32 minFlowRate,maxFlowRate,minAnalogOutput,maxAnalogOutput;
extern u32 alarmAcc,alarmUpperFlowRate,alarmLowerFlowRate;
extern u32 reverseFlowRateMin,reverseFlowRateMax;
extern u32 keyPassWord;
//*****************************************************************************
extern u16 systmeState ;
extern u16 UPGRADECammand ;
extern u16 CodeCRC ;
extern u16 jumpError ;
//**********************************************************************************************
extern __Hardware_Status_Bit_TypeDef HWState;
extern __SystemProcess_Union_TypeDef systemProcessing;
extern __SystemState_Union_TypeDef currentMode;
extern __Alarm_State_TypeDef systemAlarm;
//----------------------------------------------------------------------------------------------
extern u32 securityID;
extern u16 IDvalidTime, comCounter, AutoOffsetCounter, timePeriod, autoTxdCounter, SysVolErrorCount;
extern u16 calibType;
extern u16 curveMode;
//----------------------------------------------------------------------------------------------
extern u8 Dis1[15], timer[8];
extern u16 displayCNT;
extern __Display_Status_Bit_TypeDef displayMode;
//----------------------------------------------------------------------------------------------
//extern u32 unitPerPulse;
//----------------------------------------------------------------------------------------------
// for flowrate
extern u16 displayUpdate;
extern u32 currentFlowRate;
extern u16 samplingInterval, responseTimeIndex, samplingIntervalTarget;
extern u16 systemVoltage, batteryGrid;
//extern u16 calibTemperature;
//**********************************************************************************************
extern u16 tmpIA;
extern s32 tmpSLA, tmpSLB;
extern u32 tmpLA, tmpLB;
extern TypeWord tempWord;
extern TypeLong tempL;
extern TypeLongLong tempDev;
//**********************************************************************************************
//extern u8 temp[128];
//---------------------------------------------------------------------------------------------
extern const u8 ProductModel[];
extern const u8 SoftVersion[];
extern const u8 SoftBuildDate[];
extern const u8 PulseOutGain[]; //
extern const u8 FilterMax[]; // filter depth
extern const u16 Timing[];
extern const u16 TimeVaule[]; //0.125s0.25s, 0.5s, 1s, 2s, 4s
extern const u16 UpdateTimeVaule[]; // 0.235s, 0.45s, 0.5s, 1s, 2s
extern const u16 FRUnitForHour[];
extern const u16 FRUnitForMinute[];
//**********************************************************************************************
//extern void SetDisplayUpdateTime(void);
//extern void DisableDisplayTimerInterrupt(void);
//extern void ReadCurrentTime(void);
void EnterUserMode(void);
void EnterCalibMode(void);
void EnterZeroCalibMode(void);
void EnterBatteryMode(void);
void EnterDebugMode(void);
void EnterGcfTestMode(void);
void ModeExitCount(void);
void ManagePrimaryTimeInterval(void);
void EnterMainEntry(void);
void BackupParameterToFlash(void);
void SystemParameterInit(void);
void SystemHardWareAutoCheck(void);
void SystemHardWareInit(void);
void SystemInterfaceInit(void);
void InitGlobalVar(void);
void SystemInitProcess(void);
#endif