/******************************************************************************** * File Name: ProductPara.c * Function Describe: * Explain: * Writer: ShiLiangWen * Date: 2015-7-6 *******************************************************************************/ #define THIS_FILE_ID 6 //----------------------------------------------------------------------------- #include "includes.h" SUT_PRODUCT_PARA sutProductPara; SUT_DEVICE_CONFIG sutDeviceConfig; //SUT_DEVICE_INFO sutDeviceInfo; //读取指定地址的半字(16位数据) //faddr:读地址(此地址必须为2的倍数!!) //返回值:对应数据. u16 STMFLASH_ReadHalfWord(u32 faddr) { return *(vu16*)faddr; } //从指定地址开始读出指定长度的数据 //ReadAddr:起始地址 //pBuffer:数据指针 //NumToWrite:半字(16位)数 void STMFLASH_Read(u32 ReadAddr,u16 *pBuffer,u16 NumToRead) { u16 i; for(i=0;i=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址 if(WriteAddr&0x0000003ff)return;//非页首地址 RunMake(THIS_FILE_ID); FLASH_Unlock(); //解锁 RunMake(THIS_FILE_ID); status=FLASH_ErasePage(WriteAddr);//擦除这个扇区 if(status!=FLASH_COMPLETE){ RunMake(THIS_FILE_ID); __enable_irq() ; return; } RunMake(THIS_FILE_ID); //写入 for(i = 0; i < DataLen; i+=2) { //数据8位融合为16位 temp = (((unsigned short)pData[i+1])<<8) + ((unsigned short)pData[i]); FLASH_ProgramHalfWord((WriteAddr+i),temp); } RunMake(THIS_FILE_ID); FLASH_Lock();//上锁 RunMake(THIS_FILE_ID); __enable_irq() ; } /********************************************************************************************************** ************************************************************************************************************/ void ReadFlashData(unsigned long ReadAddr,unsigned char *pData,unsigned short DataLen) { int i,j; unsigned short temp; j=0; for(i=0;i>8)&0xff; } } void getNetMacByPSN(unsigned char *MAC,unsigned long PSN) { SUTDL DL; DL.Data.ulData=PSN; MAC[0]=0xba; MAC[1]=0xcd; MAC[2]=DL.Data.ucData.b4; MAC[3]=DL.Data.ucData.b3; MAC[4]=DL.Data.ucData.b2; MAC[5]=DL.Data.ucData.b1; } /******************************************************************** *ReadProductParaFromFlash *********************************************************************/ void ReadProductParaFromFlash(void) { unsigned char Rand; IWDG_ReloadCounter(); memset((unsigned char *)&sutProductPara,0,sizeof(SUT_PRODUCT_PARA)); ReadFlashData(PRODUCT_PARA_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA)); if(PRODUCT_MARK!=sutProductPara.Mark) { SlwTrace(INF,"Reset ProductPara!\r\n"); memset((unsigned char *)&sutProductPara,0,sizeof(SUT_PRODUCT_PARA)); sutProductPara.Mark=PRODUCT_MARK; strcpy(sutProductPara.ProductName,PRODUCT_NAME); sutProductPara.ProductVersion=PRODUCT_VERSION; sutProductPara.PSN=0; sutProductPara.AKEY=0; //memcpy(sutProductPara.SIP,SIP,sizeof(sutProductPara.SIP)); strcpy(sutProductPara.SIP,SERVER_IP); sutProductPara.Port=SERVER_PORT; strcpy(sutProductPara.Wifi_ID,WIFI_ID); strcpy(sutProductPara.Wifi_Pwd,WIFI_PWD); sutProductPara.Debug=0; getNetMacByPSN(sutProductPara.MAC,sutProductPara.PSN); WritePageData(PRODUCT_PARA_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA)); } else if(PRODUCT_VERSION!=sutProductPara.ProductVersion){ sutProductPara.ProductVersion=PRODUCT_VERSION; sutProductPara.Debug=0; WritePageData(PRODUCT_PARA_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA)); } } /********************************************************************************************************** SaveProductParaToFlash ************************************************************************************************************/ void SaveProductParaToFlash(void) { IWDG_ReloadCounter();//喂狗 tsk_lock (); WritePageData(PRODUCT_PARA_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA)); tsk_unlock (); } /******************************************************************** *ReadDeviceConfigFromFlash *********************************************************************/ void ReadDeviceConfigFromFlash(void) { if(DEVICE_CONFIG_ADDR4){ SlwTrace(INF,"Reset DeviceConfig!\r\n"); memset((unsigned char *)&sutDeviceConfig,0,sizeof(SUT_DEVICE_CONFIG)); sutDeviceConfig.Mark=DEVICE_CONFIG_MARK; sutDeviceConfig.AppExAddr=EXFLASH_FILE_DATA_ADDR; sutDeviceConfig.NetMode=DEVICE_NET_MODE; SaveDeviceConfigToFlash(); } } /******************************************************************** *SaveDeviceConfigToFlash *********************************************************************/ void SaveDeviceConfigToFlash(void) { if(DEVICE_CONFIG_ADDR