Initial commit: my SECS2 project
This commit is contained in:
96
usr/app/GasData.c
Normal file
96
usr/app/GasData.c
Normal file
@@ -0,0 +1,96 @@
|
||||
#include "GasData.h"
|
||||
#include "stdio.h"
|
||||
#include "bsp_Print.h"
|
||||
|
||||
#include "dsp_Demod.h"
|
||||
|
||||
#include "bsp_TEC.h"
|
||||
#include "bsp_ADC.h"
|
||||
#include "laser.h"
|
||||
#include "algo_Laser.h"
|
||||
#include "bsp_Uart.h"
|
||||
#include "algo_Calib.h"
|
||||
#include "GasData.h"
|
||||
#include "algo_Filter.h"
|
||||
#include "dsp_Demod.h"
|
||||
#include "app.h"
|
||||
#include "bsp_Flash.h"
|
||||
#include "bsp_print.h"
|
||||
|
||||
|
||||
|
||||
static void GasData_Task(void);
|
||||
static char *GasData_GetName(u8 GasType);
|
||||
static char *GasData_GetUnit(u8 Unit);
|
||||
|
||||
GasData_t GasData=
|
||||
{
|
||||
.Task = GasData_Task,
|
||||
.GetName = GasData_GetName,
|
||||
.GetUnit = GasData_GetUnit,
|
||||
};
|
||||
|
||||
GasData_t *pGasData = &GasData;
|
||||
|
||||
static void GasData_Task(void)
|
||||
{
|
||||
// if(BSP_PRINT_CURDATA == bsp_Print_DataTyppe)
|
||||
// {
|
||||
// printf("R_AD,%u,Cal_AD,%u,M_AD,%u,C_AD,%u,C_Val,%d,Val,%d\n",
|
||||
// pGasData->Gas_1.R_AD,pGasData->Gas_1.R_AD_Cal,pGasData->Gas_1.Measur_AD,pGasData->Gas_1.Cali_AD,pGasData->Gas_1.Fac_Value,pGasData->Gas_1.Usr_Value);
|
||||
// }
|
||||
pGasData->Gas_1.Left = LaserSensor.SHG.Pix_Light_Max;
|
||||
pGasData->Gas_1.Mid = LaserSensor.SHG.Pix_Light_Min;
|
||||
pGasData->Gas_1.Light_AD = LaserSensor.ORI.Light_AD;
|
||||
pGasData->Gas_1.TempAD = ADC.AD[ADC_BOARD];
|
||||
pGasData->Gas_1.Temp = ADC.Value[ADC_BOARD] * 100;
|
||||
pGasData->Gas_1.TECAD = ADC.AD[ADC_TEC];
|
||||
pGasData->Gas_1.TECTemp = ADC.Value[ADC_TEC] * 100;
|
||||
pGasData->Gas_1.Slope = FilterMeasur.Slope;
|
||||
pGasData->Gas_1.FastFlag = FilterMeasur.FastFlag;
|
||||
|
||||
|
||||
if(BSP_PRINT_CURDATA == bsp_Print_DataTyppe)
|
||||
{
|
||||
printf("f2pp=%u,caliAD=%u,RRtestAD=%u,cr=%d,con=%d,Cz=%d,left=%u,mid=%u,light_AD=%u,T=%d,TAD=%u,TECTemp=%d,TECAD=%u,Slope=%f,Fast=%d\n",
|
||||
pGasData->Gas_1.Measur_AD, pGasData->Gas_1.Cali_AD, pGasData->Gas_1.R_AD_Cal,
|
||||
pGasData->Gas_1.R_Value, pGasData->Gas_1.Fac_Value, pGasData->Gas_1.Usr_Value,
|
||||
pGasData->Gas_1.Left, pGasData->Gas_1.Mid, pGasData->Gas_1.Light_AD,
|
||||
pGasData->Gas_1.Temp, pGasData->Gas_1.TempAD, pGasData->Gas_1.TECTemp, pGasData->Gas_1.TECAD,
|
||||
pGasData->Gas_1.Slope, pGasData->Gas_1.FastFlag
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
static char *GasData_GetName(u8 GasType)
|
||||
{
|
||||
switch(GasType)
|
||||
{
|
||||
case GASDATA_TYPE_CH4 : return "CH4 ";
|
||||
case GASDATA_TYPE_CO2 : return "CO2 ";
|
||||
case GASDATA_TYPE_CO : return "CO2 ";
|
||||
case GASDATA_TYPE_CnHm: return "CnHm";
|
||||
case GASDATA_TYPE_SO2 : return "SO2 ";
|
||||
case GASDATA_TYPE_H2S : return "H2S ";
|
||||
case GASDATA_TYPE_H2 : return "H2 ";
|
||||
case GASDATA_TYPE_O2 : return "O2 ";
|
||||
case GASDATA_TYPE_HF : return "HF ";
|
||||
case GASDATA_TYPE_NH3 : return "NH3 ";
|
||||
default : return "unknow";
|
||||
}
|
||||
}
|
||||
|
||||
static char *GasData_GetUnit(u8 Unit)
|
||||
{
|
||||
switch(Unit)
|
||||
{
|
||||
case GASDATA_UNIT_PPM : return "ppm ";
|
||||
case GASDATA_UNIT_MG_M3 : return "mg/m3";
|
||||
case GASDATA_UNIT_PERCENT : return "% ";
|
||||
case GASDATA_UNIT_M_S : return "m/s ";
|
||||
case GASDATA_UNIT_M3_H : return "m3/h ";
|
||||
default : return "unknow";
|
||||
}
|
||||
}
|
||||
67
usr/app/GasData.h
Normal file
67
usr/app/GasData.h
Normal file
@@ -0,0 +1,67 @@
|
||||
#ifndef _GASDATA_H_
|
||||
#define _GASDATA_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define GASDATA_TYPE_CH4 (0x00)
|
||||
#define GASDATA_TYPE_CO2 (0x01)
|
||||
#define GASDATA_TYPE_CO (0x02)
|
||||
#define GASDATA_TYPE_CnHm (0x03)
|
||||
#define GASDATA_TYPE_SO2 (0x04)
|
||||
#define GASDATA_TYPE_H2S (0x05)
|
||||
#define GASDATA_TYPE_H2 (0x06)
|
||||
#define GASDATA_TYPE_O2 (0x07)
|
||||
#define GASDATA_TYPE_HF (0x1C)
|
||||
#define GASDATA_TYPE_NH3 (0x1D)
|
||||
|
||||
|
||||
#define GASDATA_UNIT_PPM (0)
|
||||
#define GASDATA_UNIT_MG_M3 (1)
|
||||
#define GASDATA_UNIT_PERCENT (2)
|
||||
#define GASDATA_UNIT_M_S (3)
|
||||
#define GASDATA_UNIT_M3_H (4)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 GasType;
|
||||
u8 Uint;
|
||||
u8 Point;
|
||||
u16 Range;
|
||||
}GasData_Flash_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GasData_Flash_t FlashData; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||
float Slope; /*б<><D0B1>*/
|
||||
|
||||
u8 FastFlag; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>־λ*/
|
||||
u16 Left,Mid; /*<2A>ҷ<EFBFBD>*/
|
||||
u16 Light_AD; /*<2A><EFBFBD><E2B9A6>*/
|
||||
u16 TempAD; /*<2A>¶<EFBFBD>AD*/
|
||||
s16 Temp; /*<2A>¶<EFBFBD>*/
|
||||
u16 TECAD; /*TEC AD*/
|
||||
s16 TECTemp; /*TEC <20>¶<EFBFBD>*/
|
||||
|
||||
|
||||
|
||||
u16 R_AD; /*ԭʼADֵ*/
|
||||
u16 R_AD_Cal; /*ԭʼADֵ*/
|
||||
u16 Cali_AD; /*Уʱ<D7BC><CAB1><EFBFBD>˲<EFBFBD>ADֵ*/
|
||||
u16 Measur_AD; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>˲<EFBFBD>ADֵ*/
|
||||
|
||||
s16 R_Value; /*<2A>˲<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8>*/
|
||||
s16 Fac_Value; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>Ũ<EFBFBD><C5A8>*/
|
||||
s16 Usr_Value; /*<2A>û<EFBFBD>У<D0A3><D7BC><EFBFBD><EFBFBD>Ũ<EFBFBD><C5A8>*/
|
||||
}GasDataClass_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GasDataClass_t Gas_1,Gas_2;
|
||||
void (*Task)(void);
|
||||
char *(*GetName)(u8);
|
||||
char *(*GetUnit)(u8);
|
||||
}GasData_t;
|
||||
|
||||
extern GasData_t GasData;
|
||||
#endif
|
||||
62
usr/app/app.c
Normal file
62
usr/app/app.c
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "app.h"
|
||||
#include "os_timer.h"
|
||||
#include "stdio.h"
|
||||
#include "bsp_Uart.h"
|
||||
#include "bsp_iap.h"
|
||||
|
||||
/*Э<><D0AD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
const char SwVersion[20] = "V0.001.0";
|
||||
|
||||
void TASK_Idle(void);
|
||||
void Task_10ms(void);
|
||||
void Task_50ms(void);
|
||||
void Task_100ms(void);
|
||||
void Task_200ms(void);
|
||||
void Task_500ms(void);
|
||||
void Task_1s(void);
|
||||
void Task_2s(void);
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: AppInit
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʼ<EFBFBD><CABC>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
******************************************/
|
||||
void App_Init(void)
|
||||
{
|
||||
OsTimer_Init(); /*<2A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
||||
|
||||
// COM_Uart1.Init(&COM_Uart1);
|
||||
COM_Uart2.Init(&COM_Uart2);
|
||||
iap.init();
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: App_Task
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ѭ<EFBFBD><D1AD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
|
||||
******************************************/
|
||||
void App_Task(void)
|
||||
{
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_10ms, osTime_MSecTick, 10))
|
||||
{
|
||||
OsTimeTick_10ms = osTime_MSecTick;
|
||||
Task_10ms();
|
||||
}
|
||||
TASK_Idle();
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD>ִ<EFBFBD>еĺ<D0B5><C4BA><EFBFBD>*/
|
||||
void TASK_Idle(void)
|
||||
{
|
||||
COM_Uart1.Rx_Task(&COM_Uart1);
|
||||
COM_Uart2.Rx_Task(&COM_Uart2);
|
||||
iap.task();
|
||||
}
|
||||
|
||||
void Task_10ms(void)
|
||||
{
|
||||
|
||||
}
|
||||
9
usr/app/app.h
Normal file
9
usr/app/app.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef _APP_H_
|
||||
#define _APP_H_
|
||||
|
||||
extern const char SwVersion[20];
|
||||
|
||||
void App_Init(void);
|
||||
void App_Task(void);
|
||||
|
||||
#endif
|
||||
131
usr/app/laser.c
Normal file
131
usr/app/laser.c
Normal file
@@ -0,0 +1,131 @@
|
||||
#include "laser.h"
|
||||
|
||||
#include "algo_Laser.h"
|
||||
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
#include "bsp_DriveWave.h"
|
||||
#include "bsp_ADS8864.h"
|
||||
#include "dsp_Demod.h"
|
||||
#include "wk_usart.h"
|
||||
#include "algo_Calib.h"
|
||||
#include "algo_Filter.h"
|
||||
#include "GasData.h"
|
||||
#include "proto_Transform.h"
|
||||
|
||||
/*<2A>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD> Ϊ2<CEAA><32>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>*/
|
||||
#define LASER_SAMPLE_LSH (3U)
|
||||
#define LASER_SAMPLE_NUM (8)
|
||||
|
||||
/*<2A>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>*/
|
||||
static u32 Laser_WaveSample[DRIVEWAVE_VALID_NUM];
|
||||
static void Laser_Task(void);
|
||||
static void Laser_WaveIO_Int(void);
|
||||
static void Laser_Init(void);
|
||||
|
||||
Laser_t Laser =
|
||||
{
|
||||
.pWaveSample = Laser_WaveSample,
|
||||
.Init = Laser_Init,
|
||||
.WaveIO_Int = Laser_WaveIO_Int,
|
||||
.Task = Laser_Task,
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
|
||||
void Laser_Sample_Start(void)
|
||||
{
|
||||
tmr_counter_value_set(TMR1,0);
|
||||
tmr_interrupt_enable(TMR1,TMR_OVF_INT,TRUE);
|
||||
tmr_counter_enable(TMR1,TRUE);
|
||||
}
|
||||
|
||||
static void Laser_Init(void)
|
||||
{
|
||||
Laser_Sample_Start();
|
||||
}
|
||||
|
||||
/*ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>*/
|
||||
void Laser_Sample_Stop(void)
|
||||
{
|
||||
tmr_counter_enable(TMR1,FALSE);
|
||||
tmr_interrupt_enable(TMR1,TMR_OVF_INT,FALSE);
|
||||
}
|
||||
|
||||
static void Laser_Task(void)
|
||||
{
|
||||
/*<2A>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
if(DriveWave.DriveCount >= LASER_SAMPLE_NUM)
|
||||
{
|
||||
u16 i;
|
||||
float x;
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>*/
|
||||
for(i=0;i<DRIVEWAVE_VALID_NUM;i++)
|
||||
{
|
||||
Laser_WaveSample[i] >>= LASER_SAMPLE_LSH;
|
||||
Demod.inWave[i] = Laser_WaveSample[i];
|
||||
}
|
||||
|
||||
/*<2A>źŽ<C5BA><C5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
Demod.Task();
|
||||
/*<2A><><EFBFBD><EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
LaserSensor.Calculate();
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD>*/
|
||||
GasData.Gas_1.R_AD = LaserSensor.SHG.PP_Ori;
|
||||
GasData.Gas_1.R_AD_Cal = LaserSensor.SHG.PP_CalLight;
|
||||
|
||||
LaserSensor.SHG.PP_MeasurAvg = FilterMeasur.FastFilter(&FilterMeasur,LaserSensor.SHG.PP_CalLight);
|
||||
GasData.Gas_1.Measur_AD = LaserSensor.SHG.PP_MeasurAvg;
|
||||
LaserSensor.SHG.PP_CalibAvg = FilterCalib.FastFilter(&FilterCalib,LaserSensor.SHG.PP_CalLight);
|
||||
GasData.Gas_1.Cali_AD = LaserSensor.SHG.PP_CalibAvg;
|
||||
|
||||
/*Ũ<>ȼ<EFBFBD><C8BC><EFBFBD>*/
|
||||
x = LaserSensor.SHG.PP_CalLight;
|
||||
GasData.Gas_1.R_Value = Calib.FacCalibCoeff[3] * x * x * x + Calib.FacCalibCoeff[2] * x * x + Calib.FacCalibCoeff[1] * x + Calib.FacCalibCoeff[0];
|
||||
|
||||
x = LaserSensor.SHG.PP_MeasurAvg;
|
||||
GasData.Gas_1.Fac_Value = Calib.FacCalibCoeff[3] * x * x * x + Calib.FacCalibCoeff[2] * x * x + Calib.FacCalibCoeff[1] * x + Calib.FacCalibCoeff[0];
|
||||
x = GasData.Gas_1.Fac_Value;
|
||||
GasData.Gas_1.Usr_Value = Calib.UsrCalibCoeff[0] * (x + Calib.UsrCalibCoeff[1]);
|
||||
GasData.Task();
|
||||
proto_Transform_Task();
|
||||
|
||||
memset(Laser_WaveSample,0,sizeof(Laser_WaveSample));
|
||||
/*<2A><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
|
||||
DriveWave.DriveCount = 0;
|
||||
Laser_Sample_Start();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*̽<><CCBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>80k<30>ж<EFBFBD>*/
|
||||
static void Laser_WaveIO_Int(void)
|
||||
{
|
||||
static u16 AD_index;
|
||||
u16 AD;
|
||||
|
||||
DriveWave.DacOut(AD_index);
|
||||
if(AD_index < DRIVEWAVE_VALID_NUM)
|
||||
{
|
||||
AD = ADS8864.ADRead();
|
||||
Laser_WaveSample[AD_index] += AD;
|
||||
}
|
||||
|
||||
if(DRIVEWAVE_NUM - 1 == AD_index)
|
||||
{
|
||||
AD_index = 0;
|
||||
DriveWave.DriveCount++;
|
||||
if(DriveWave.DriveCount >= LASER_SAMPLE_NUM)
|
||||
{
|
||||
/*ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>*/
|
||||
Laser_Sample_Stop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
AD_index++;
|
||||
}
|
||||
}
|
||||
|
||||
18
usr/app/laser.h
Normal file
18
usr/app/laser.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#ifndef _LASER_H_
|
||||
#define _LASER_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 SampleCompleteFlag;
|
||||
u32 *pWaveSample;
|
||||
void (*Init)(void);
|
||||
void (*WaveIO_Int)(void);
|
||||
void (*Task)(void);
|
||||
|
||||
}Laser_t;
|
||||
|
||||
extern Laser_t Laser;
|
||||
#endif
|
||||
121
usr/app/os_timer.c
Normal file
121
usr/app/os_timer.c
Normal file
@@ -0,0 +1,121 @@
|
||||
#include "os_timer.h"
|
||||
|
||||
unsigned short osTime_MSecTick = 0; /*<2A>δ<EFBFBD>ʱ<EFBFBD><CAB1>*/
|
||||
unsigned short osTime_SecTick = 0;
|
||||
unsigned short osTime_10SecTick = 0; /*10s<30><73>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼*/
|
||||
|
||||
static unsigned short osTimer_MSec1 = 0;
|
||||
static unsigned short osTimer_MSec2 = 0;
|
||||
|
||||
unsigned short OsTimeTick_10ms;
|
||||
unsigned short OsTimeTick_50ms;
|
||||
unsigned short OsTimeTick_100ms;
|
||||
unsigned short OsTimeTick_200ms;
|
||||
unsigned short OsTimeTick_500ms;
|
||||
unsigned short OsTimeTick_1s;
|
||||
unsigned short OsTimeTick_2s;
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_Init
|
||||
* CALLED BY: Application
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: None
|
||||
* RETURN VALUES: None
|
||||
* DESCRIPTION: OsTimer initialization
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void OsTimer_Init(void)
|
||||
{
|
||||
osTimer_MSec1 = 0;
|
||||
osTimer_MSec2 = 0;
|
||||
osTime_SecTick = 0;
|
||||
osTime_MSecTick = 0;
|
||||
|
||||
OsTimeTick_10ms = osTime_MSecTick;
|
||||
OsTimeTick_50ms = osTime_MSecTick;
|
||||
OsTimeTick_100ms = osTime_MSecTick;
|
||||
OsTimeTick_200ms = osTime_MSecTick;
|
||||
OsTimeTick_500ms = osTime_MSecTick;
|
||||
OsTimeTick_1s = osTime_MSecTick;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_Increment
|
||||
* CALLED BY: ISR
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: msec - millisecond to increase
|
||||
* RETURN VALUES: None
|
||||
* DESCRIPTION: Increase the Timer
|
||||
*
|
||||
****************************************************************************/
|
||||
void OsTimer_Increment(unsigned short msec)
|
||||
{
|
||||
osTime_MSecTick += msec;
|
||||
osTimer_MSec1 += msec;
|
||||
osTimer_MSec2 += msec;
|
||||
if (osTimer_MSec1 >= 1000U) /*1s*/
|
||||
{
|
||||
osTimer_MSec1 = 0U;
|
||||
osTime_SecTick++;
|
||||
}
|
||||
if (osTimer_MSec2 >= 10000U) /*10s*/
|
||||
{
|
||||
osTimer_MSec2 = 0U;
|
||||
osTime_10SecTick++;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_CheckTimeOut
|
||||
* CALLED BY: Application
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: timeStart - start tick
|
||||
* timeNow - current tick
|
||||
* timeOut - expired tick
|
||||
* RETURN VALUES: whether timer is expired
|
||||
* DESCRIPTION: check if specified time is expired
|
||||
*
|
||||
****************************************************************************/
|
||||
unsigned char OsTimer_CheckTimeOut(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut)
|
||||
{
|
||||
unsigned short timerActivateVal;
|
||||
timerActivateVal = timeOut + timeStart;
|
||||
|
||||
if (timerActivateVal > timeStart)
|
||||
{
|
||||
if ((timeNow >= timerActivateVal) || (timeNow < timeStart))
|
||||
{
|
||||
return TIME_TRUE;
|
||||
}
|
||||
}
|
||||
else if ((timeNow >= timerActivateVal) && (timeNow < timeStart))
|
||||
{
|
||||
return TIME_TRUE;
|
||||
}
|
||||
return TIME_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>OsTimer_CheckTimeOut<75><74><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
*/
|
||||
unsigned short OsTimer_CheckRunTime(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut)
|
||||
{
|
||||
unsigned short timerActivateVal;
|
||||
timerActivateVal = timeOut + timeStart;
|
||||
|
||||
if (timerActivateVal > timeStart)
|
||||
{
|
||||
return (timerActivateVal - timeNow);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (65535U - timeNow + timerActivateVal);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ʱ*/
|
||||
void Delay_ms(unsigned short delay)
|
||||
{
|
||||
HAL_Delay(delay);
|
||||
}
|
||||
29
usr/app/os_timer.h
Normal file
29
usr/app/os_timer.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#ifndef _OSTIMER_H_
|
||||
#define _OSTIMER_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define TIME_TRUE 1U
|
||||
#define TIME_FALSE 0U
|
||||
|
||||
|
||||
extern unsigned short osTime_MSecTick;
|
||||
extern unsigned short osTime_SecTick;
|
||||
extern unsigned short osTime_10SecTick; // 10s<30><73>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼
|
||||
|
||||
extern unsigned short OsTimeTick_10ms;
|
||||
extern unsigned short OsTimeTick_50ms;
|
||||
extern unsigned short OsTimeTick_100ms;
|
||||
extern unsigned short OsTimeTick_200ms;
|
||||
extern unsigned short OsTimeTick_500ms;
|
||||
extern unsigned short OsTimeTick_1s;
|
||||
extern unsigned short OsTimeTick_2s;
|
||||
|
||||
void OsTimer_Init(void);
|
||||
void OsTimer_Increment(unsigned short msec);
|
||||
unsigned char OsTimer_CheckTimeOut(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut);
|
||||
unsigned short OsTimer_CheckRunTime(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut);
|
||||
|
||||
void Delay_ms(unsigned short delay);
|
||||
|
||||
#endif
|
||||
14
usr/app/usr_config.h
Normal file
14
usr/app/usr_config.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#ifndef _USR_CONFIG_H_
|
||||
#define _USR_CONFIG_H_
|
||||
|
||||
#define USR_TRUE (1U)
|
||||
#define USR_FALSE (0U)
|
||||
|
||||
#define USR_ENABLE (1U)
|
||||
#define USR_DISENABLE (0U)
|
||||
|
||||
|
||||
#define U64_MAX (0xffffffffffffffff)
|
||||
#define U32_MAX (0xffffffff)
|
||||
#define U16_MAX (0xffff)
|
||||
#endif
|
||||
Reference in New Issue
Block a user