基础版本
This commit is contained in:
@@ -0,0 +1,436 @@
|
||||
/*C*****************************************************************************
|
||||
* NAME: fRamDrive.c
|
||||
*-------------------------------------------------------------------------------
|
||||
*******************************************************************************/
|
||||
/*_____ I N C L U D E S ______________________________________________________*/
|
||||
|
||||
//#define FRAM_INIT
|
||||
|
||||
|
||||
#include "config.h" //全局声明
|
||||
|
||||
volatile s_uniGlobal_Typedef s_uniGlobal;
|
||||
|
||||
|
||||
//参数初始化====================================================================
|
||||
//密码
|
||||
|
||||
const u8 initFRam_Flag = 0x38;
|
||||
const PrintInfo_Type InitPrintInfo={
|
||||
" Ho So Giao Dich ",//交易记录
|
||||
"TEN CUA HANG: ",//地址
|
||||
"DIA CHI: ",//税号
|
||||
"MA SO THUE: ",//
|
||||
" ",
|
||||
" ",
|
||||
"SO VOL: ",//抢号
|
||||
"SO TIEN: ",//金额
|
||||
"SO LIT: ",//加油量
|
||||
"DONGIA: ",//单价
|
||||
" ",
|
||||
"NGAY: ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"CAM ON & HEN GAP LAI QUY KHACH !",
|
||||
};
|
||||
const MD_Port_Data_Type InitMD_Port_Data = {
|
||||
//BaudRate StopBits Parity_Even POSType GunNumber MBCountTime Display_Type
|
||||
{ 9600, 1, 0, 0, 0, 10, 0 ,MD_RS485,{0,0,0,0,0,0,0,0,0,0}},
|
||||
{//Num Addr State Standby[35]
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
{0, 0, 0, },
|
||||
}
|
||||
};
|
||||
/*typedef struct
|
||||
{
|
||||
char CMD_SOCKA[50];
|
||||
char IMEI[20];
|
||||
char APN[40];
|
||||
char WiFIName[40];
|
||||
char WiFIPassWord[20];
|
||||
}WirelessData_Type;*/
|
||||
|
||||
//Tast URL http://test.joyfueling.com:8012/
|
||||
// http://3.92.208.210:7011/
|
||||
const POSData_Type InitPOSData={
|
||||
//
|
||||
//{"AT+SOCKA=TCP,3.92.208.210,7011\r\n"},POS_Connect_Typ_Station};
|
||||
{"joyfuel.joyfueling.com,7011","","","KFB-2.4G","KFB123456"},POS_Connect_Typ_Station};
|
||||
const u8 InitMD_Port_Num_Top = 0;
|
||||
const ROM_UpData_Type InitROM_UpData = {{0x06},900};//主程序最大450K
|
||||
const u32 InitPREXDATA_WaitUpNummber = 0;
|
||||
const u32 InitPREXDATA_TTC = 0;
|
||||
const PREXDATA_Type initPrintLastRecord= {0,0,0,0,0,0,0,0,0};
|
||||
const POSNetSetState_TypeDef InitPOSNetSetState;
|
||||
const MD_Multiplex_Port_Data_Type InitMD_Multiplex_Port_Data;//端口5,多路复用口PREXDATA_NowFrameLen
|
||||
const WhiteList_Type InitWhiteList;
|
||||
const PREXDATA_Upload_Type InitPREXDATA_Upload;
|
||||
//==============================================================================
|
||||
const framDataIndex FDITab[] =
|
||||
{ ///FRAM数据1区(数据操作相对不频烦)
|
||||
/// pInitData; upData pData firstAdr; len; Group Tpye; //(注意,校验增加在数据包尾)
|
||||
{(u8*)&initFRam_Flag, (u8*)(&buf_FRam_Flag), (u8*)(&TXHData.FRam_Flag), FRam_Flag_FADR, FRam_Flag_LEN, FRam_Flag_Group, CF_FRam_Flag},
|
||||
{(u8*)&InitROM_UpData, (u8*)(&buf_ROM_UpData), (u8*)(&TXHData.ROM_UpData), ROM_UpData_FADR, ROM_UpData_LEN, ROM_UpData_Group, CF_ROM_UpData},
|
||||
{(u8*)&InitMD_Port_Data, (u8*)(&buf_MD_Port_Data), (u8*)(&TXHData.MD_Port_Data), MD_Port_Data_FADR, MD_Port_Data_LEN, MD_Port_Data_Group, CF_MD_Port_Data},
|
||||
{(u8*)&InitPOSData, (u8*)(&buf_POSData), (u8*)(&TXHData.POSData), POSData_FADR, POSData_LEN, POSData_Group, CF_POSData},
|
||||
{(u8*)&InitMD_Port_Num_Top, (u8*)(&buf_MD_Port_Num_Top), (u8*)(&TXHData.MD_Port_Num_Top), MD_Port_Num_Top_FADR, MD_Port_Num_Top_LEN, MD_Port_Num_Top_Group, CF_MD_Port_Num_Top},
|
||||
{(u8*)&InitPREXDATA_WaitUpNummber,(u8*)(&buf_PREXDATA_WaitUpNummber), (u8*)(&TXHData.PREXDATA_WaitUpNummber),PREXDATA_WaitUpNummber_FADR, PREXDATA_WaitUpNummber_LEN, PREXDATA_WaitUpNummber_Group, CF_PREXDATA_WaitUpNummber},
|
||||
{(u8*)&InitPREXDATA_TTC, (u8*)(&buf_PREXDATA_TTC), (u8*)(&TXHData.PREXDATA_TTC), PREXDATA_TTC_FADR, PREXDATA_TTC_LEN, PREXDATA_TTC_Group, CF_PREXDATA_TTC},
|
||||
{(u8*)&InitPrintInfo, (u8*)(&buf_PrintInfo), (u8*)(&TXHData.PrintInfo), PrintInfo_FADR, PrintInfo_LEN, PrintInfo_Group, CF_PrintInfo},
|
||||
{(u8*)&initPrintLastRecord, (u8*)(&buf_PrintLastRecord), (u8*)(&TXHData.PrintLastRecord), PrintLastRecord_FADR, PrintLastRecord_LEN, PrintLastRecord_Group, CF_PrintLastRecord},
|
||||
{(u8*)&InitPOSNetSetState, (u8*)(&buf_POSNetSetState), (u8*)(&TXHData.POSNetSetState), POSNetSetState_FADR, POSNetSetState_LEN, POSNetSetState_Group, CF_POSNetSetState},
|
||||
{(u8*)&InitMD_Multiplex_Port_Data,(u8*)(&buf_MD_Multiplex_Port_Data), (u8*)(&TXHData.MD_Multiplex_Port_Data),MD_Multiplex_Port_Data_FADR, MD_Multiplex_Port_Data_LEN, MD_Multiplex_Port_Data_Group, CF_MD_Multiplex_Port_Data},
|
||||
{(u8*)&InitWhiteList, (u8*)(&buf_WhiteList), (u8*)(&TXHData.WhiteList), WhiteList_FADR, WhiteList_LEN, WhiteList_Group, CF_WhiteList},
|
||||
{(u8*)&InitPREXDATA_Upload, (u8*)(&buf_PREXDATA_Upload), (u8*)(&TXHData.PREXDATA_Upload), PREXDATA_Upload_FADR, PREXDATA_Upload_LEN, PREXDATA_Upload_Group, CF_PREXDATA_Upload},
|
||||
};
|
||||
////==============================================================================
|
||||
|
||||
//F*****************************************************************************
|
||||
//* NAME: FRamDataCheck
|
||||
//* PURPOSE: 校验函数
|
||||
//* PARAMS: pData需要检验的数组地址,len数据长度
|
||||
//* return: 无
|
||||
//******************************************************************************
|
||||
u8 FRamDataCheck(volatile u8* pData, u16 len)
|
||||
{
|
||||
u8 result;
|
||||
result = *pData;
|
||||
while(len--)
|
||||
{
|
||||
result += *pData++;
|
||||
};
|
||||
|
||||
return result;
|
||||
}
|
||||
/****************************************************
|
||||
函数名:FM_IO_Configuration
|
||||
功能 :FM存储部分用到的IO初始化
|
||||
参数 :无
|
||||
返回值:无
|
||||
****************************************************/
|
||||
void FM_IO_Configuration(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA ,ENABLE);
|
||||
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);
|
||||
|
||||
/*!< Configure SPI1 pins: SCK MOSI*/
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//GPIO_Speed_100MHz;
|
||||
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
|
||||
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
/*!< Configure SPI1: MISO */
|
||||
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //modi
|
||||
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
|
||||
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
||||
|
||||
}
|
||||
|
||||
/****************************************************
|
||||
函数名:FM_SPI_Configuration
|
||||
功能 :FM存储部分用到的SPI初始化
|
||||
参数 :无
|
||||
返回值:无
|
||||
****************************************************/
|
||||
void FM_SPI_Configuration(void)
|
||||
{
|
||||
/* SPI1 configuration */
|
||||
SPI_InitTypeDef SPI_InitStructure;
|
||||
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
|
||||
|
||||
SPI_I2S_DeInit(SPI1);
|
||||
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//???
|
||||
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8?????
|
||||
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;//?????SCK?1
|
||||
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//??????2???????
|
||||
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//NSS????
|
||||
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;//???
|
||||
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//????
|
||||
SPI_InitStructure.SPI_CRCPolynomial = 7;//CRC???
|
||||
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//????
|
||||
SPI_Init(SPI1, &SPI_InitStructure);
|
||||
SPI_Cmd(SPI1, ENABLE);
|
||||
|
||||
}
|
||||
|
||||
/****************************************************
|
||||
函数名:FM_SPI2_SendByte
|
||||
功能 :FM存储部分用到的SPI发送函数
|
||||
参数 :dt 要发送的数据
|
||||
返回值:无
|
||||
****************************************************/
|
||||
u8 FM_SPI1_SendByte(u8 dt)
|
||||
{
|
||||
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
|
||||
SPI_I2S_SendData(SPI1, dt);
|
||||
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
|
||||
return SPI_I2S_ReceiveData(SPI1);
|
||||
}
|
||||
|
||||
/****************************************************
|
||||
函数名:FM_ReadData
|
||||
功能 :读取指定地址的数据
|
||||
参数 :*pBuff:读取缓存
|
||||
addr :读取的地址
|
||||
Len :数据长度
|
||||
返回值:无
|
||||
****************************************************/
|
||||
void FM_ReadData(u8 *pBuff,u32 addr,u16 Len)
|
||||
{
|
||||
u16 i = 0;
|
||||
CLI();
|
||||
FM_CS_EN;
|
||||
FM_SPI1_SendByte(0x03);
|
||||
FM_SPI1_SendByte((u8)(addr>>16));
|
||||
FM_SPI1_SendByte((u8)(addr>>8));
|
||||
FM_SPI1_SendByte((u8)addr);
|
||||
for(i = 0;i < Len;i ++)
|
||||
{
|
||||
*pBuff = FM_SPI1_SendByte(0x00);
|
||||
pBuff ++;
|
||||
}
|
||||
FM_CS_DIS;
|
||||
SEI();
|
||||
}
|
||||
|
||||
/****************************************************
|
||||
函数名:FM_WriteData
|
||||
功能 :写取指定地址的数据
|
||||
参数 :*pBuff:数据缓存
|
||||
addr :写入的地址
|
||||
Len :数据长度
|
||||
返回值:无
|
||||
****************************************************/
|
||||
void FM_WriteData(u8 *pBuff,u32 addr,u16 Len)
|
||||
{
|
||||
u16 i = 0;
|
||||
CLI();
|
||||
FM_CS_EN;
|
||||
FM_SPI1_SendByte(0x06);
|
||||
FM_CS_DIS;
|
||||
FM_CS_EN;
|
||||
FM_SPI1_SendByte(0x02);
|
||||
FM_SPI1_SendByte((u8)(addr>>16));
|
||||
FM_SPI1_SendByte((u8)(addr>>8));
|
||||
FM_SPI1_SendByte((u8)addr);
|
||||
for(i = 0;i < Len;i ++)
|
||||
{
|
||||
FM_SPI1_SendByte(*pBuff);
|
||||
pBuff ++;
|
||||
}
|
||||
FM_CS_DIS;
|
||||
SEI();
|
||||
}
|
||||
/****************************************************
|
||||
函数名:FM_Init
|
||||
功能 :FM存储部分初始化
|
||||
参数 :无
|
||||
返回值:无
|
||||
****************************************************/
|
||||
u16 iiii = 0;//搞不清楚,必须是全局变量才行(可能存在隐患,标注一下)
|
||||
void FM_Init(void)
|
||||
{
|
||||
u16 i = 0,j = 0;
|
||||
u8* pBuff;
|
||||
u8 Temp_Buff[1300];
|
||||
u8 Temp = 0;
|
||||
u32 Fristflag = 0,delay = 0;
|
||||
FM_IO_Configuration(); //FM相关IO初始化
|
||||
FM_SPI_Configuration(); //FM相关SPI初始化
|
||||
//for(delay = 0;delay<0xfffff;delay++);//无意义延时,等待铁电稳定
|
||||
delay_ms(10);
|
||||
pBuff = (u8*)&Fristflag;
|
||||
{
|
||||
FM_CS_EN;
|
||||
FM_SPI1_SendByte(0x06); //写使能
|
||||
FM_CS_DIS;
|
||||
FM_CS_EN;
|
||||
FM_SPI1_SendByte(0x01); //清除保护位
|
||||
FM_SPI1_SendByte(0x00);
|
||||
FM_CS_DIS;
|
||||
}
|
||||
if((FDITab[FramItemEnd - 1].firstAdr + FDITab[FramItemEnd - 1].len * FDITab[FramItemEnd - 1].Group) > 0x20000)
|
||||
{
|
||||
__breakpoint(0); // halt program execution here
|
||||
while(1);
|
||||
}
|
||||
#ifdef FRAM_INIT //初始化
|
||||
for(iiii = 0;iiii< FramItemEnd;iiii ++) //开机写入默认存储内容
|
||||
{
|
||||
for(i = 0;i < FDITab[iiii].Group;i ++)
|
||||
{
|
||||
for(j = 0;j < FDITab[iiii].len-checkLen_1;j ++)
|
||||
Temp_Buff[j]=*(FDITab[iiii].upData+j) = *(FDITab[iiii].pInitData+j);
|
||||
|
||||
Temp = FRamDataCheck(Temp_Buff,FDITab[iiii].len - checkLen_1);
|
||||
FM_WriteData(uniGlobal.Global,FDITab[iiii].firstAdr+FDITab[iiii].len*i, FDITab[iiii].len-checkLen_1);
|
||||
FM_WriteData(&Temp, FDITab[iiii].firstAdr+FDITab[iiii].len+FDITab[iiii].len*i-checkLen_1,checkLen_1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if(SWF8 == SWF_ON)
|
||||
{
|
||||
FM_Data_Init();
|
||||
}
|
||||
|
||||
for(iiii = 0;iiii< FramItemEnd;iiii ++) //开机获取存储内容
|
||||
{
|
||||
for(i = 0;i < FDITab[iiii].Group;i ++)
|
||||
{
|
||||
if(FMItemRead(iiii,i) == 0)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TXHData.SystemErr = TXHData.PREXDATA_WaitUpNummber;
|
||||
}
|
||||
void PCBEncryption(void)
|
||||
{
|
||||
STM32CPU.v.id[0] = *(u32*)0x1fff7a10;
|
||||
STM32CPU.v.id[1] = *(u32*)(0x1fff7a10 + 4);
|
||||
STM32CPU.v.id[2] = *(u32*)(0x1fff7a10 + 8);
|
||||
TXHData.Encryption[0] = CRC_Check(&STM32CPU.v.byte[0],6);
|
||||
TXHData.Encryption[1] = CRC_Check(&STM32CPU.v.byte[1],6);
|
||||
TXHData.Encryption[2] = CRC_Check(&STM32CPU.v.byte[2],8);
|
||||
TXHData.Encryption[3] = CRC_Check(&STM32CPU.v.byte[3],8);
|
||||
FM_WriteData((u8*)TXHData.Encryption,Encryption_FADR,sizeof(TXHData.Encryption));
|
||||
}
|
||||
void PCBEncryption_Check(void)
|
||||
{
|
||||
STM32CPU.v.id[0] = *(u32*)0x1fff7a10;
|
||||
STM32CPU.v.id[1] = *(u32*)(0x1fff7a10 + 4);
|
||||
STM32CPU.v.id[2] = *(u32*)(0x1fff7a10 + 8);
|
||||
FM_ReadData((u8*)TXHData.Encryption,Encryption_FADR,sizeof(TXHData.Encryption));
|
||||
if(TXHData.Encryption[0] != CRC_Check(&STM32CPU.v.byte[0],6)) TXHData.ErrState.Flag.e_errPCBCheck = 1;
|
||||
if(TXHData.Encryption[1] != CRC_Check(&STM32CPU.v.byte[1],6)) TXHData.ErrState.Flag.e_errPCBCheck = 1;
|
||||
if(TXHData.Encryption[2] != CRC_Check(&STM32CPU.v.byte[2],8)) TXHData.ErrState.Flag.e_errPCBCheck = 1;
|
||||
if(TXHData.Encryption[3] != CRC_Check(&STM32CPU.v.byte[3],8)) TXHData.ErrState.Flag.e_errPCBCheck = 1;
|
||||
}
|
||||
void FM_Data_Init(void)
|
||||
{
|
||||
u16 i = 0,j = 0;
|
||||
u8 Temp_Buff[1300];
|
||||
u8 Temp = 0;
|
||||
u8 BackTemp = 0;
|
||||
FMItemRead(CF_ROM_UpData,0);
|
||||
BackTemp = TXHData.ROM_UpData.ROM_UpData_State.State;//IAP初始化的时候用过了,不能重复初始化
|
||||
for(iiii = 0;iiii< FramItemEnd;iiii ++) //开机写入默认存储内容
|
||||
{
|
||||
for(i = 0;i < FDITab[iiii].Group;i ++)
|
||||
{
|
||||
for(j = 0;j < FDITab[iiii].len-checkLen_1;j ++)
|
||||
Temp_Buff[j]=*(FDITab[iiii].upData+j) = *(FDITab[iiii].pInitData+j);
|
||||
|
||||
Temp = FRamDataCheck(Temp_Buff,FDITab[iiii].len - checkLen_1);
|
||||
FM_WriteData(uniGlobal.Global,FDITab[iiii].firstAdr+FDITab[iiii].len*i, FDITab[iiii].len-checkLen_1);
|
||||
FM_WriteData(&Temp, FDITab[iiii].firstAdr+FDITab[iiii].len+FDITab[iiii].len*i-checkLen_1,checkLen_1);
|
||||
}
|
||||
}
|
||||
TXHData.ROM_UpData.ROM_UpData_State.State = BackTemp;
|
||||
FMItemWrite(CF_ROM_UpData,0);
|
||||
}
|
||||
u8 FMItemWrite(FramItem Type, u16 Group)
|
||||
{
|
||||
u16 i = 0,j = 0,k = 0;
|
||||
u8 Temp_Buff[1300];
|
||||
u8 Temp = 0;
|
||||
if(Group >= FDITab[Type].Group)
|
||||
return 0;
|
||||
if(TXHData.PowerDown.State == 0 && FMItemRead(CF_FRam_Flag,0) == 1)
|
||||
{
|
||||
for(i = 0;i < FDITab[Type].len;i ++)
|
||||
{
|
||||
*(FDITab[Type].upData + i) = *(FDITab[Type].pData + i + (FDITab[Type].len-1)*Group);
|
||||
Temp_Buff[i] = *(FDITab[Type].upData + i);
|
||||
}
|
||||
for(j = 0;j < 6;j ++)
|
||||
{
|
||||
FM_WriteData(uniGlobal.Global,FDITab[Type].firstAdr+FDITab[Type].len*Group,FDITab[Type].len-1);
|
||||
Temp = FRamDataCheck(Temp_Buff,FDITab[Type].len - checkLen_1);
|
||||
FM_WriteData(&Temp,FDITab[Type].firstAdr+FDITab[Type].len+FDITab[Type].len*Group-1,checkLen_1);
|
||||
|
||||
if(FMItemRead(Type,Group) == 1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
delay_ms(100);
|
||||
}
|
||||
}
|
||||
// pGun.ErrState[0].Flag.e_errFramParameter = 1; //存储器错误公共错误,只判断一个
|
||||
// pGun.ErrState[1].Flag.e_errFramParameter = 1; //存储器错误公共错误,只判断一个
|
||||
return 0;
|
||||
}
|
||||
|
||||
u8 FMItemRead(FramItem Type, u16 Group)
|
||||
{
|
||||
volatile u16 ii = 0,j = 0;
|
||||
u8 Temp_Buff[1300];
|
||||
u8 Temp = 0;
|
||||
|
||||
if(Group >= FDITab[Type].Group)
|
||||
return 0;
|
||||
for(j = 0;j < 6;j ++)
|
||||
{
|
||||
/****************************/
|
||||
FM_ReadData(uniGlobal.Global,FDITab[CF_FRam_Flag].firstAdr,1);
|
||||
*(Temp_Buff) = *(FDITab[CF_FRam_Flag].upData);
|
||||
|
||||
if(*(Temp_Buff) == 0x38)
|
||||
{
|
||||
FM_ReadData(uniGlobal.Global,FDITab[Type].firstAdr+FDITab[Type].len*Group,FDITab[Type].len);
|
||||
for(ii = 0;ii < FDITab[Type].len;ii ++)
|
||||
*(Temp_Buff+ii) = *(FDITab[Type].upData+ii);
|
||||
Temp = FRamDataCheck(Temp_Buff,FDITab[Type].len - checkLen_1);
|
||||
if(Temp == Temp_Buff[FDITab[Type].len - checkLen_1])
|
||||
{
|
||||
for(ii = 0;ii < FDITab[Type].len - checkLen_1;ii ++)
|
||||
{
|
||||
*(FDITab[Type].pData+ii+(FDITab[Type].len-1)*Group) = *(FDITab[Type].upData+ii);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
delay_ms(100);
|
||||
}
|
||||
// pGun.ErrState[0].Flag.e_errFramParameter = 1; //存储器错误公共错误,只判断一个
|
||||
// pGun.ErrState[1].Flag.e_errFramParameter = 1; //存储器错误公共错误,只判断一个
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
#ifndef _FRam_H_
|
||||
#define _FRam_H_
|
||||
/******************************************************************************
|
||||
* NAME: fRam.h
|
||||
*******************************************************************************/
|
||||
/*_____ M A C R O S __________________________________________________________*/
|
||||
|
||||
|
||||
//端口
|
||||
#define FM_CS_EN GPIO_ResetBits(GPIOA, GPIO_Pin_3);GPIO_SetBits(GPIOA, GPIO_Pin_4);
|
||||
#define FM_CS_DIS GPIO_SetBits(GPIOA, GPIO_Pin_3);
|
||||
//FM 命令
|
||||
#define FM_WREN 0X06 //读写使能
|
||||
#define FM_READ 0X03 //读命令
|
||||
#define FM_WRITE 0X02 //写命令
|
||||
|
||||
#define CLI() __set_PRIMASK(1)
|
||||
#define SEI() __set_PRIMASK(0)
|
||||
|
||||
/*_____ M A C R O S __________________________________________________________*/
|
||||
//CONFIG(配置)
|
||||
#define FRAM_SPACE_SIZE (0X800) ///定义铁电最大保存容量
|
||||
#define FristStart_Addr 100
|
||||
//******************************************************************************
|
||||
// 存储器内容
|
||||
|
||||
#define uniGlobal s_uniGlobal.u
|
||||
|
||||
#define checkLen_1 1 ///如果数据组带有校验,增加1byte
|
||||
//******************************************************************************
|
||||
// FRAM_DATA_MAP
|
||||
//加密验证数据
|
||||
///全局缓冲中的值
|
||||
///结构体定义
|
||||
#define Encryption_FADR (80)
|
||||
|
||||
//存储器完好标致
|
||||
///全局缓冲中的值
|
||||
#define buf_FRam_Flag uniGlobal.FRam_Flag
|
||||
///结构体定义
|
||||
#define FRam_Flag_FADR (FristStart_Addr)
|
||||
#define FRam_Flag_LEN (sizeof(buf_FRam_Flag) + checkLen_1)
|
||||
#define FRam_Flag_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_ROM_UpData uniGlobal.ROM_UpData
|
||||
///结构体定义
|
||||
#define ROM_UpData_FADR (FRam_Flag_FADR + FRam_Flag_LEN * FRam_Flag_Group)
|
||||
#define ROM_UpData_LEN (sizeof(buf_ROM_UpData) + checkLen_1)
|
||||
#define ROM_UpData_Group 1 //组数
|
||||
|
||||
//员工数据
|
||||
///全局缓冲中的值
|
||||
#define buf_MD_Port_Data uniGlobal.MD_Port_Data
|
||||
///结构体定义
|
||||
#define MD_Port_Data_FADR (ROM_UpData_FADR + ROM_UpData_LEN * ROM_UpData_Group)
|
||||
#define MD_Port_Data_LEN (sizeof(buf_MD_Port_Data) + checkLen_1)
|
||||
#define MD_Port_Data_Group 4 //组数
|
||||
|
||||
//员工数据
|
||||
///全局缓冲中的值
|
||||
#define buf_POSData uniGlobal.POSData
|
||||
///结构体定义
|
||||
#define POSData_FADR (MD_Port_Data_FADR + MD_Port_Data_LEN * MD_Port_Data_Group)
|
||||
#define POSData_LEN (sizeof(buf_POSData) + checkLen_1)
|
||||
#define POSData_Group 1 //组数
|
||||
|
||||
//员工数据
|
||||
///全局缓冲中的值
|
||||
#define buf_MD_Port_Num_Top uniGlobal.MD_Port_Num_Top
|
||||
///结构体定义
|
||||
#define MD_Port_Num_Top_FADR (POSData_FADR + POSData_LEN * POSData_Group)
|
||||
#define MD_Port_Num_Top_LEN (sizeof(buf_MD_Port_Num_Top) + checkLen_1)
|
||||
#define MD_Port_Num_Top_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_PREXDATA_WaitUpNummber uniGlobal.PREXDATA_WaitUpNummber
|
||||
///结构体定义
|
||||
#define PREXDATA_WaitUpNummber_FADR (MD_Port_Num_Top_FADR + MD_Port_Num_Top_LEN * MD_Port_Num_Top_Group)
|
||||
#define PREXDATA_WaitUpNummber_LEN (sizeof(buf_PREXDATA_WaitUpNummber) + checkLen_1)
|
||||
#define PREXDATA_WaitUpNummber_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_PREXDATA_TTC uniGlobal.PREXDATA_TTC
|
||||
///结构体定义
|
||||
#define PREXDATA_TTC_FADR (PREXDATA_WaitUpNummber_FADR + PREXDATA_WaitUpNummber_LEN * PREXDATA_WaitUpNummber_Group)
|
||||
#define PREXDATA_TTC_LEN (sizeof(buf_PREXDATA_TTC) + checkLen_1)
|
||||
#define PREXDATA_TTC_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_PrintInfo uniGlobal.PrintInfo
|
||||
///结构体定义
|
||||
#define PrintInfo_FADR (PREXDATA_TTC_FADR + PREXDATA_TTC_LEN * PREXDATA_TTC_Group)
|
||||
#define PrintInfo_LEN (sizeof(buf_PrintInfo) + checkLen_1)
|
||||
#define PrintInfo_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_PrintLastRecord uniGlobal.PrintLastRecord
|
||||
///结构体定义
|
||||
#define PrintLastRecord_FADR (PrintInfo_FADR + PrintInfo_LEN * PrintInfo_Group)
|
||||
#define PrintLastRecord_LEN (sizeof(buf_PrintLastRecord) + checkLen_1)
|
||||
#define PrintLastRecord_Group 64 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_POSNetSetState uniGlobal.POSNetSetState
|
||||
///结构体定义
|
||||
#define POSNetSetState_FADR (PrintLastRecord_FADR + PrintLastRecord_LEN * PrintLastRecord_Group)
|
||||
#define POSNetSetState_LEN (sizeof(buf_POSNetSetState) + checkLen_1)
|
||||
#define POSNetSetState_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_MD_Multiplex_Port_Data uniGlobal.MD_Multiplex_Port_Data
|
||||
///结构体定义
|
||||
#define MD_Multiplex_Port_Data_FADR (POSNetSetState_FADR + POSNetSetState_LEN * POSNetSetState_Group)
|
||||
#define MD_Multiplex_Port_Data_LEN (sizeof(buf_MD_Multiplex_Port_Data) + checkLen_1)
|
||||
#define MD_Multiplex_Port_Data_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_WhiteList uniGlobal.WhiteList
|
||||
///结构体定义
|
||||
#define WhiteList_FADR (MD_Multiplex_Port_Data_FADR + MD_Multiplex_Port_Data_LEN * MD_Multiplex_Port_Data_Group)
|
||||
#define WhiteList_LEN (sizeof(buf_WhiteList) + checkLen_1)
|
||||
#define WhiteList_Group 1 //组数
|
||||
|
||||
///全局缓冲中的值
|
||||
#define buf_PREXDATA_Upload uniGlobal.PREXDATA_Upload
|
||||
///结构体定义
|
||||
#define PREXDATA_Upload_FADR (WhiteList_FADR + WhiteList_LEN * WhiteList_Group)
|
||||
#define PREXDATA_Upload_LEN (sizeof(buf_PREXDATA_Upload) + checkLen_1)
|
||||
#define PREXDATA_Upload_Group 1 //组数
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{
|
||||
u8 Global[1000]; //全局最大个数
|
||||
u8 FRam_Flag;
|
||||
MD_Port_Data_Type MD_Port_Data;
|
||||
POSData_Type POSData;
|
||||
u8 MD_Port_Num_Top;
|
||||
ROM_UpData_Type ROM_UpData;
|
||||
u32 PREXDATA_WaitUpNummber;
|
||||
u32 PREXDATA_TTC;
|
||||
PrintInfo_Type PrintInfo;
|
||||
PREXDATA_Type PrintLastRecord;//越南打印每把枪最后一笔数据
|
||||
POSNetSetState_TypeDef POSNetSetState;
|
||||
MD_Multiplex_Port_Data_Type MD_Multiplex_Port_Data;//端口5,多路复用口
|
||||
WhiteList_Type WhiteList;
|
||||
PREXDATA_Upload_Type PREXDATA_Upload;
|
||||
}u;
|
||||
u8 CheckAdd;
|
||||
}s_uniGlobal_Typedef; //存储器读写缓存共用体
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CF_FRam_Flag,
|
||||
CF_ROM_UpData,
|
||||
CF_MD_Port_Data,
|
||||
CF_POSData,
|
||||
CF_MD_Port_Num_Top,
|
||||
CF_PREXDATA_WaitUpNummber,
|
||||
CF_PREXDATA_TTC,
|
||||
CF_PrintInfo,
|
||||
CF_PrintLastRecord,
|
||||
CF_POSNetSetState,
|
||||
CF_MD_Multiplex_Port_Data,
|
||||
CF_WhiteList,
|
||||
CF_PREXDATA_Upload,
|
||||
|
||||
FramItemEnd,
|
||||
}FramItem;
|
||||
|
||||
//********************************************************************************
|
||||
typedef struct
|
||||
{
|
||||
u8* pInitData;//初始化指针
|
||||
u8* upData; //共用体数据缓存区指针
|
||||
u8* pData; //pGun数据指针
|
||||
u32 firstAdr; //第一地址
|
||||
u16 len; //长度
|
||||
u16 Group;
|
||||
u8 Tpye; //类型
|
||||
}framDataIndex;
|
||||
|
||||
void FM_Init(void);
|
||||
u8 FMItemWrite(FramItem Type, u16 Group);
|
||||
u8 FMItemRead(FramItem Type, u16 Group);
|
||||
void FM_Data_Init(void);
|
||||
void PCBEncryption(void);
|
||||
void PCBEncryption_Check(void);
|
||||
#endif
|
||||
@@ -0,0 +1,445 @@
|
||||
#ifndef _FRam_H_
|
||||
#define _FRam_H_
|
||||
/******************************************************************************
|
||||
* NAME: fRam.h
|
||||
*******************************************************************************/
|
||||
/*_____ M A C R O S __________________________________________________________*/
|
||||
|
||||
|
||||
//端口
|
||||
#define FM_CS_EN GPIO_ResetBits(GPIOC, GPIO_Pin_6);
|
||||
#define FM_CS_DIS GPIO_SetBits(GPIOC, GPIO_Pin_6);
|
||||
#define FM_WP_EN GPIO_ResetBits(GPIOC, GPIO_Pin_7);
|
||||
#define FM_WP_DIS GPIO_SetBits(GPIOC, GPIO_Pin_7);
|
||||
//FM 命令
|
||||
#define FM_WREN 0X06 //读写使能
|
||||
#define FM_READ 0X03 //读命令
|
||||
#define FM_WRITE 0X02 //写命令
|
||||
|
||||
#define CLI() __set_PRIMASK(1)
|
||||
#define SEI() __set_PRIMASK(0)
|
||||
|
||||
/*_____ M A C R O S __________________________________________________________*/
|
||||
//CONFIG(配置)
|
||||
#define FRAM_SPACE_SIZE (0X800) ///定义铁电最大保存容量
|
||||
#define FristStart_Addr 0
|
||||
//******************************************************************************
|
||||
// 存储器内容
|
||||
|
||||
#define uniGlobal s_uniGlobal.u
|
||||
|
||||
//******************************************************************************
|
||||
// FRAM_DATA_MAP
|
||||
//******************************************************************************
|
||||
#define checkLen_1 0 ///如果数据组带有校验,增加1byte
|
||||
//==============================================================================
|
||||
//单价
|
||||
///全局缓冲中的值
|
||||
#define buf_Price uniGlobal.Price
|
||||
///结构体定义
|
||||
#define Price_FADR 100
|
||||
#define Price_SADR FRAM_SPACE_SIZE/2+100
|
||||
#define Price_LEN (sizeof(buf_Price) + checkLen_1)
|
||||
#define Price_arrayNb gunNumber
|
||||
//==============================================================================
|
||||
//班累
|
||||
///全局缓冲中的值
|
||||
#define buf_M_SquadTop uniGlobal.M_SquadTop
|
||||
///结构体定义
|
||||
#define M_SquadTop_FADR (Price_FADR + Price_LEN)
|
||||
#define M_SquadTop_SADR (Price_SADR + Price_LEN)
|
||||
#define M_SquadTop_LEN (sizeof(buf_M_SquadTop) + checkLen_1)
|
||||
#define M_SquadTop_arrayNb gunNumber
|
||||
//==============================================================================
|
||||
//班累
|
||||
///全局缓冲中的值
|
||||
#define buf_V_SquadTop uniGlobal.V_SquadTop
|
||||
///结构体定义
|
||||
#define V_SquadTop_FADR (M_SquadTop_FADR + M_SquadTop_LEN)
|
||||
#define V_SquadTop_SADR (M_SquadTop_SADR + M_SquadTop_LEN)
|
||||
#define V_SquadTop_LEN (sizeof(buf_V_SquadTop) + checkLen_1)
|
||||
#define V_SquadTop_arrayNb gunNumber
|
||||
//==============================================================================
|
||||
//班累
|
||||
///全局缓冲中的值
|
||||
#define buf_S_SquadTop uniGlobal.S_SquadTop
|
||||
///结构体定义
|
||||
#define S_SquadTop_FADR (V_SquadTop_FADR + V_SquadTop_LEN)
|
||||
#define S_SquadTop_SADR (V_SquadTop_SADR + V_SquadTop_LEN)
|
||||
#define S_SquadTop_LEN (sizeof(buf_S_SquadTop) + checkLen_1)
|
||||
#define S_SquadTop_arrayNb gunNumber
|
||||
//体积总累
|
||||
///全局缓冲中的值
|
||||
#define buf_MassTop uniGlobal.MassTop
|
||||
///结构体定义
|
||||
#define MassTop_FADR (S_SquadTop_FADR + S_SquadTop_LEN)
|
||||
#define MassTop_SADR (S_SquadTop_SADR + S_SquadTop_LEN)
|
||||
#define MassTop_LEN (sizeof(buf_MassTop) + checkLen_1)
|
||||
#define MassTop_arrayNb gunNumber
|
||||
//质量总累
|
||||
///全局缓冲中的值
|
||||
#define buf_VolumeTop uniGlobal.VolumeTop
|
||||
///结构体定义
|
||||
#define VolumeTop_FADR (MassTop_FADR + MassTop_LEN)
|
||||
#define VolumeTop_SADR (MassTop_SADR + MassTop_LEN)
|
||||
#define VolumeTop_LEN (sizeof(buf_VolumeTop) + checkLen_1)
|
||||
#define VolumeTop_arrayNb gunNumber
|
||||
//金额总累
|
||||
///全局缓冲中的值
|
||||
#define buf_SaleTop uniGlobal.SaleTop
|
||||
///结构体定义
|
||||
#define SaleTop_FADR (VolumeTop_FADR + VolumeTop_LEN)
|
||||
#define SaleTop_SADR (VolumeTop_SADR + VolumeTop_LEN)
|
||||
#define SaleTop_LEN (sizeof(buf_SaleTop) + checkLen_1)
|
||||
#define SaleTop_arrayNb gunNumber
|
||||
//卸车总累
|
||||
///全局缓冲中的值
|
||||
#define buf_StockTop uniGlobal.StockTop
|
||||
///结构体定义
|
||||
#define StockTop_FADR (SaleTop_FADR + SaleTop_LEN)
|
||||
#define StockTop_SADR (SaleTop_SADR + SaleTop_LEN)
|
||||
#define StockTop_LEN (sizeof(buf_StockTop) + checkLen_1)
|
||||
#define StockTop_arrayNb gunNumber
|
||||
//小数点
|
||||
///全局缓冲中的值
|
||||
#define buf_Decimal uniGlobal.Decimal
|
||||
///结构体定义
|
||||
#define Decimal_FADR (StockTop_FADR + StockTop_LEN)
|
||||
#define Decimal_SADR (StockTop_SADR + StockTop_LEN)
|
||||
#define Decimal_LEN (sizeof(buf_Decimal) + checkLen_1)
|
||||
#define Decimal_arrayNb gunNumber
|
||||
//系统时间
|
||||
///全局缓冲中的值
|
||||
#define buf_SystemTime uniGlobal.SystemTime
|
||||
///结构体定义
|
||||
#define SystemTime_FADR (Decimal_FADR + Decimal_LEN)
|
||||
#define SystemTime_SADR (Decimal_SADR + Decimal_LEN)
|
||||
#define SystemTime_LEN (sizeof(buf_SystemTime) + checkLen_1)
|
||||
#define SystemTime_arrayNb gunNumber
|
||||
//流量计模式
|
||||
///全局缓冲中的值
|
||||
#define buf_GasWorkMode uniGlobal.GasWorkMode
|
||||
///结构体定义
|
||||
#define GasWorkMode_FADR (SystemTime_FADR + SystemTime_LEN)
|
||||
#define GasWorkMode_SADR (SystemTime_SADR + SystemTime_LEN)
|
||||
#define GasWorkMode_LEN (sizeof(buf_GasWorkMode) + checkLen_1)
|
||||
#define GasWorkMode_arrayNb gunNumber
|
||||
//脉冲当量
|
||||
///全局缓冲中的值
|
||||
#define buf_PulseEqu uniGlobal.PulseEqu
|
||||
///结构体定义
|
||||
#define PulseEqu_FADR (GasWorkMode_FADR + GasWorkMode_LEN)
|
||||
#define PulseEqu_SADR (GasWorkMode_SADR + GasWorkMode_LEN)
|
||||
#define PulseEqu_LEN (sizeof(buf_PulseEqu) + checkLen_1)
|
||||
#define PulseEqu_arrayNb gunNumber
|
||||
//密度
|
||||
///全局缓冲中的值
|
||||
#define buf_Density uniGlobal.Density
|
||||
///结构体定义
|
||||
#define Density_FADR (PulseEqu_FADR + PulseEqu_LEN)
|
||||
#define Density_SADR (PulseEqu_SADR + PulseEqu_LEN)
|
||||
#define Density_LEN (sizeof(buf_Density) + checkLen_1)
|
||||
#define Density_arrayNb gunNumber
|
||||
//最小显示量
|
||||
///全局缓冲中的值
|
||||
#define buf_MinDisp uniGlobal.MinDisp
|
||||
///结构体定义
|
||||
#define MinDisp_FADR (Density_FADR + Density_LEN)
|
||||
#define MinDisp_SADR (Density_SADR + Density_LEN)
|
||||
#define MinDisp_LEN (sizeof(buf_MinDisp) + checkLen_1)
|
||||
#define MinDisp_arrayNb gunNumber
|
||||
//提前关阀量
|
||||
///全局缓冲中的值
|
||||
#define buf_ValueTurnOff uniGlobal.ValueTurnOff
|
||||
///结构体定义
|
||||
#define ValueTurnOff_FADR (MinDisp_FADR + MinDisp_LEN)
|
||||
#define ValueTurnOff_SADR (MinDisp_SADR + MinDisp_LEN)
|
||||
#define ValueTurnOff_LEN (sizeof(buf_ValueTurnOff) + checkLen_1)
|
||||
#define ValueTurnOff_arrayNb gunNumber
|
||||
//过冲量
|
||||
///全局缓冲中的值
|
||||
#define buf_ValueOverShoot uniGlobal.ValueOverShoot
|
||||
///结构体定义
|
||||
#define ValueOverShoot_FADR (ValueTurnOff_FADR + ValueTurnOff_LEN)
|
||||
#define ValueOverShoot_SADR (ValueTurnOff_SADR + ValueTurnOff_LEN)
|
||||
#define ValueOverShoot_LEN (sizeof(buf_ValueOverShoot) + checkLen_1)
|
||||
#define ValueOverShoot_arrayNb gunNumber
|
||||
//时间计数器
|
||||
///全局缓冲中的值
|
||||
#define buf_TimeCount uniGlobal.TimeCount
|
||||
///结构体定义
|
||||
#define TimeCount_FADR (ValueOverShoot_FADR + ValueOverShoot_LEN)
|
||||
#define TimeCount_SADR (ValueOverShoot_SADR + ValueOverShoot_LEN)
|
||||
#define TimeCount_LEN (sizeof(buf_TimeCount) + checkLen_1)
|
||||
#define TimeCount_arrayNb gunNumber
|
||||
//当次加油数据
|
||||
///全局缓冲中的值
|
||||
#define buf_FuelRecord0 uniGlobal.FuelRecord0
|
||||
///结构体定义
|
||||
#define FuelRecord0_FADR (TimeCount_FADR + TimeCount_LEN)
|
||||
#define FuelRecord0_SADR (TimeCount_SADR + TimeCount_LEN)
|
||||
#define FuelRecord0_LEN (sizeof(buf_FuelRecord0) + checkLen_1)
|
||||
#define FuelRecord0_arrayNb gunNumber
|
||||
//前次加油数据
|
||||
///全局缓冲中的值
|
||||
#define buf_FuelRecord1 uniGlobal.FuelRecord1
|
||||
///结构体定义
|
||||
#define FuelRecord1_FADR (FuelRecord0_FADR + FuelRecord0_LEN)
|
||||
#define FuelRecord1_SADR (FuelRecord0_SADR + FuelRecord0_LEN)
|
||||
#define FuelRecord1_LEN (sizeof(buf_FuelRecord1) + checkLen_1)
|
||||
#define FuelRecord1_arrayNb gunNumber
|
||||
//限制加油次数
|
||||
///全局缓冲中的值
|
||||
#define buf_TriesLimit uniGlobal.TriesLimit
|
||||
///结构体定义
|
||||
#define TriesLimit_FADR (FuelRecord1_FADR + FuelRecord1_LEN)
|
||||
#define TriesLimit_SADR (FuelRecord1_SADR + FuelRecord1_LEN)
|
||||
#define TriesLimit_LEN (sizeof(buf_TriesLimit) + checkLen_1)
|
||||
#define TriesLimit_arrayNb gunNumber
|
||||
//流量计地址
|
||||
///全局缓冲中的值
|
||||
#define buf_GasAddr uniGlobal.GasAddr
|
||||
///结构体定义
|
||||
#define GasAddr_FADR (TriesLimit_FADR + TriesLimit_LEN)
|
||||
#define GasAddr_SADR (TriesLimit_SADR + TriesLimit_LEN)
|
||||
#define GasAddr_LEN (sizeof(buf_GasAddr) + checkLen_1)
|
||||
#define GasAddr_arrayNb gunNumber
|
||||
//流量计地址
|
||||
///全局缓冲中的值
|
||||
#define buf_GasAddr uniGlobal.GasAddr
|
||||
///结构体定义
|
||||
#define GasAddr_FADR (TriesLimit_FADR + TriesLimit_LEN)
|
||||
#define GasAddr_SADR (TriesLimit_SADR + TriesLimit_LEN)
|
||||
#define GasAddr_LEN (sizeof(buf_GasAddr) + checkLen_1)
|
||||
#define GasAddr_arrayNb gunNumber
|
||||
//比例系数
|
||||
///全局缓冲中的值
|
||||
#define buf_GasScaleCoefficients uniGlobal.GasScaleCoefficients
|
||||
///结构体定义
|
||||
#define GasScaleCoefficients_FADR (GasAddr_FADR + GasAddr_LEN)
|
||||
#define GasScaleCoefficients_SADR (GasAddr_SADR + GasAddr_LEN)
|
||||
#define GasScaleCoefficients_LEN (sizeof(buf_GasScaleCoefficients) + checkLen_1)
|
||||
#define GasScaleCoefficients_arrayNb gunNumber
|
||||
//密度
|
||||
///全局缓冲中的值
|
||||
#define buf_GasDensity uniGlobal.GasDensity
|
||||
///结构体定义
|
||||
#define GasDensity_FADR (GasScaleCoefficients_FADR + GasScaleCoefficients_LEN)
|
||||
#define GasDensity_SADR (GasScaleCoefficients_SADR + GasScaleCoefficients_LEN)
|
||||
#define GasDensity_LEN (sizeof(buf_GasDensity) + checkLen_1)
|
||||
#define GasDensity_arrayNb gunNumber
|
||||
///全局缓冲中的值
|
||||
#define buf_GasPourTo1 uniGlobal.GasPourTo1
|
||||
///结构体定义
|
||||
#define GasPourTo1_FADR (GasDensity_FADR + GasDensity_LEN)
|
||||
#define GasPourTo1_SADR (GasDensity_SADR + GasDensity_LEN)
|
||||
#define GasPourTo1_LEN (sizeof(buf_GasPourTo1) + checkLen_1)
|
||||
#define GasPourTo1_arrayNb gunNumber
|
||||
//低中到高流速切换
|
||||
///全局缓冲中的值
|
||||
#define buf_GasPour1To2 uniGlobal.GasPour1To2
|
||||
///结构体定义
|
||||
#define GasPour1To2_FADR (GasPourTo1_FADR + GasPourTo1_LEN)
|
||||
#define GasPour1To2_SADR (GasPourTo1_SADR + GasPourTo1_LEN)
|
||||
#define GasPour1To2_LEN (sizeof(buf_GasPour1To2) + checkLen_1)
|
||||
#define GasPour1To2_arrayNb gunNumber
|
||||
//最大流速
|
||||
///全局缓冲中的值
|
||||
#define buf_GasFlowMax uniGlobal.GasFlowMax
|
||||
///结构体定义
|
||||
#define GasFlowMax_FADR (GasPour1To2_FADR + GasPour1To2_LEN)
|
||||
#define GasFlowMax_SADR (GasPour1To2_SADR + GasPour1To2_LEN)
|
||||
#define GasFlowMax_LEN (sizeof(buf_GasFlowMax) + checkLen_1)
|
||||
#define GasFlowMax_arrayNb gunNumber
|
||||
//最小流速
|
||||
///全局缓冲中的值
|
||||
#define buf_GasFlowMin uniGlobal.GasFlowMin
|
||||
///结构体定义
|
||||
#define GasFlowMin_FADR (GasFlowMax_FADR + GasFlowMax_LEN)
|
||||
#define GasFlowMin_SADR (GasFlowMax_SADR + GasFlowMax_LEN)
|
||||
#define GasFlowMin_LEN (sizeof(buf_GasFlowMin) + checkLen_1)
|
||||
#define GasFlowMin_arrayNb gunNumber
|
||||
//最大压力值
|
||||
///全局缓冲中的值
|
||||
#define buf_PressureMax uniGlobal.PressureMax
|
||||
///结构体定义
|
||||
#define PressureMax_FADR (GasFlowMin_FADR + GasFlowMin_LEN)
|
||||
#define PressureMax_SADR (GasFlowMin_SADR + GasFlowMin_LEN)
|
||||
#define PressureMax_LEN (sizeof(buf_PressureMax) + checkLen_1)
|
||||
#define PressureMax_arrayNb gunNumber
|
||||
//最小压力值
|
||||
///全局缓冲中的值
|
||||
#define buf_PressureMin uniGlobal.PressureMin
|
||||
///结构体定义
|
||||
#define PressureMin_FADR (PressureMax_FADR + PressureMax_LEN)
|
||||
#define PressureMin_SADR (PressureMax_SADR + PressureMax_LEN)
|
||||
#define PressureMin_LEN (sizeof(buf_PressureMin) + checkLen_1)
|
||||
#define PressureMin_arrayNb gunNumber
|
||||
|
||||
//卡介质
|
||||
///全局缓冲中的值
|
||||
#define buf_Medium uniGlobal.Medium
|
||||
///结构体定义
|
||||
#define Medium_FADR (PressureMin_FADR + PressureMin_LEN)
|
||||
#define Medium_SADR (PressureMin_SADR + PressureMin_LEN)
|
||||
#define Medium_LEN (sizeof(buf_Medium) + checkLen_1)
|
||||
#define Medium_arrayNb gunNumber
|
||||
//显示类型设置
|
||||
///全局缓冲中的值
|
||||
#define buf_DispSet uniGlobal.DispSet
|
||||
///结构体定义
|
||||
#define DispSet_FADR (Medium_FADR + Medium_LEN)
|
||||
#define DispSet_SADR (Medium_SADR + Medium_LEN)
|
||||
#define DispSet_LEN (sizeof(buf_DispSet) + checkLen_1)
|
||||
#define DispSet_arrayNb gunNumber
|
||||
|
||||
//补偿
|
||||
///全局缓冲中的值
|
||||
#define buf_Compensation uniGlobal.Compensation
|
||||
///结构体定义
|
||||
#define Compensation_FADR (DispSet_FADR + DispSet_LEN)
|
||||
#define Compensation_SADR (DispSet_SADR + DispSet_LEN)
|
||||
#define Compensation_LEN (sizeof(buf_Compensation) + checkLen_1)
|
||||
#define Compensation_arrayNb gunNumber
|
||||
|
||||
//RTC时钟第一次开机标志
|
||||
///全局缓冲中的值
|
||||
#define buf_RTCTimer_Flag uniGlobal.RTCTimer_Flag
|
||||
///结构体定义
|
||||
#define RTCTimer_Flag_FADR (Compensation_FADR + Compensation_LEN)
|
||||
#define RTCTimer_Flag_SADR (Compensation_SADR + Compensation_LEN)
|
||||
#define RTCTimer_Flag_LEN (sizeof(buf_RTCTimer_Flag) + checkLen_1)
|
||||
#define RTCTimer_Flag_arrayNb gunNumber
|
||||
|
||||
//RTC时钟备份
|
||||
///全局缓冲中的值
|
||||
#define buf_RTCTimer_BKB uniGlobal.RTCTimer_BKB
|
||||
///结构体定义
|
||||
#define RTCTimer_BKB_FADR (RTCTimer_Flag_FADR + RTCTimer_Flag_LEN)
|
||||
#define RTCTimer_BKB_SADR (RTCTimer_Flag_SADR + RTCTimer_Flag_LEN)
|
||||
#define RTCTimer_BKB_LEN (sizeof(buf_RTCTimer_BKB) + checkLen_1)
|
||||
#define RTCTimer_BKB_arrayNb gunNumber
|
||||
|
||||
//存储器完好标致
|
||||
///全局缓冲中的值
|
||||
#define buf_FRam_Flag uniGlobal.FRam_Flag
|
||||
///结构体定义
|
||||
#define FRam_Flag_FADR (RTCTimer_BKB_FADR + RTCTimer_BKB_LEN)
|
||||
#define FRam_Flag_SADR (RTCTimer_BKB_SADR + RTCTimer_BKB_LEN)
|
||||
#define FRam_Flag_LEN (sizeof(buf_FRam_Flag) + checkLen_1)
|
||||
#define FRam_Flag_arrayNb gunNumber
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u32 volume; //volume与sale 必须连续,符个字符对齐首地址
|
||||
u32 sale; //金额
|
||||
u32 price; //单价
|
||||
}s_FuelRecord_Typedef;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
union
|
||||
{
|
||||
u8 Global[100]; //全局最大个数
|
||||
u16 Price[gunNumber]; //单价
|
||||
|
||||
u64 M_SquadTop[gunNumber]; //班累
|
||||
u64 V_SquadTop[gunNumber]; //班累
|
||||
u64 S_SquadTop[gunNumber]; //班累
|
||||
u64 MassTop[gunNumber]; //质量总累
|
||||
u64 VolumeTop[gunNumber]; //体积总累
|
||||
u64 SaleTop[gunNumber]; //金额总累
|
||||
u64 StockTop[gunNumber]; //卸车总累
|
||||
u8 Decimal[3]; //小数点 金额 体积 单价
|
||||
u8 SystemTime[7]; //系统时间 年年 月 日 时 分 秒
|
||||
u8 GasWorkMode[gunNumber]; //加气模式
|
||||
u32 PulseEqu[gunNumber]; //脉冲当量
|
||||
u32 Density[gunNumber]; //密度
|
||||
u16 MinDisp[gunNumber]; //最小显示量
|
||||
u8 ValueTurnOff[gunNumber][50]; //提前关阀量
|
||||
int8_t ValueOverShoot[gunNumber][2]; //过冲量
|
||||
u32 TimeCount; //时间计数器
|
||||
s_FuelRecord_Typedef FuelRecord0[gunNumber];//当次加油数据
|
||||
s_FuelRecord_Typedef FuelRecord1[gunNumber];//前次加油数据
|
||||
u32 TriesLimit; //限制加油次数
|
||||
|
||||
/******************流量计相关*******************/
|
||||
u8 GasAddr[gunNumber]; //当前地址0开始,按顺序,与抢号对应
|
||||
u16 GasScaleCoefficients[gunNumber]; //比例系数
|
||||
u16 GasDensity[gunNumber]; //密度
|
||||
u8 GasPourTo1[gunNumber]; //低到中流速切换阀值0-5 默认 2 Kg/Min
|
||||
u8 GasPour1To2[gunNumber]; //中到高流速切换阀值0-5 默认 1.5Kg/Min
|
||||
u8 GasFlowMax[gunNumber]; //最大流速值0-90 默认 50Kg/Min
|
||||
u8 GasFlowMin[gunNumber]; //最小流速值0-90 默认 50Kg/Min
|
||||
|
||||
/******************压力检测相关******************/
|
||||
u16 PressureMax[gunNumber]; //最大允许压力0-40 默认20MPa
|
||||
u16 PressureMin[gunNumber]; //最小允许压力
|
||||
u16 Medium; //卡介质
|
||||
u16 DispSet; //显示类型设置
|
||||
float Compensation[gunNumber];//补偿
|
||||
|
||||
u8 RTCTimer_Flag; //RTC初次启动标志
|
||||
u32 RTCTimer_BKB; //RTC计数备份
|
||||
u8 FRam_Flag;
|
||||
}u;
|
||||
u8 CheckAdd;
|
||||
}s_uniGlobal_Typedef; //存储器读写缓存共用体
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CF_Price, //单价
|
||||
CF_M_SquadTop, //质量班累
|
||||
CF_V_SquadTop, //体积班累
|
||||
CF_S_SquadTop, //金额班累
|
||||
CF_MassTop, //质量总累
|
||||
CF_VolumeTop, //体积总累
|
||||
CF_SaleTop, //金额总累
|
||||
CF_StockTop, //卸车总累
|
||||
CF_Decimal, //小数点
|
||||
CF_SystemTime, //系统时间
|
||||
CF_GasWorkMode, //流量计模式
|
||||
CF_PulseEqu, //脉冲当量
|
||||
CF_Density, //密度
|
||||
CF_MinDisp, //最小显示量
|
||||
CF_ValueTurnOff, //提前关阀量
|
||||
CF_ValueOverShoot, //过冲量
|
||||
CF_TimeCount, //时间计数器
|
||||
CF_FuelRecord0, //当次加油记录
|
||||
CF_FuelRecord1, //前次加油记录
|
||||
CF_TriesLimit, //限制加油次数
|
||||
CF_GasAddr, //流量计地址
|
||||
CF_GasScaleCoefficients, //流量计比例系数
|
||||
CF_GasDensity, //流量计密度
|
||||
CF_GasPourTo1, //低到中流速切换阀值0-5 默认 2 Kg/Min
|
||||
CF_GasPour1To2, //低到中流速切换阀值0-5 默认 2 Kg/Min
|
||||
CF_GasFlowMax, //最大流速值0-90 默认 50Kg/Min
|
||||
CF_GasFlowMin, //最大流速值0-90 默认 50Kg/Min
|
||||
CF_PressureMax, //最大允许压力0-40 默认20MPa
|
||||
CF_Medium, //卡介质
|
||||
CF_DispSet, //显示类型设置
|
||||
CF_Compensation, //补偿
|
||||
CF_RTCTimer_Flag,
|
||||
CF_RTCTimer_BKB,
|
||||
|
||||
CF_FRam_Flag, //存储器出错标志
|
||||
FramItemEnd,
|
||||
}FramItem;
|
||||
|
||||
//********************************************************************************
|
||||
typedef struct
|
||||
{
|
||||
u8* pInitData;//初始化指针
|
||||
u8* upData; //共用体数据缓存区指针
|
||||
u8* pData; //pGun数据指针
|
||||
u16 firstAdr; //第一地址
|
||||
u16 secondAdr;//第二地址
|
||||
u8 len; //长度
|
||||
u8 Tpye; //类型
|
||||
}framDataIndex;
|
||||
|
||||
void FM_Init(void);
|
||||
u8 FMItemWrite(FramItem Type);
|
||||
u8 FMItemRead(FramItem Type);
|
||||
void FM_Data_Init(void);
|
||||
#endif
|
||||
Reference in New Issue
Block a user