This commit is contained in:
2026-04-23 10:50:18 +08:00
commit a436fda935
844 changed files with 272643 additions and 0 deletions

View File

@ -0,0 +1,327 @@
/*
*********************************************************************************
ͷ<>ļ<EFBFBD>
*********************************************************************************
*/
#include "eeprom.h"
#include "bsp.h"
#include "stm32l1xx_flash.h"
/*
************************************************************************************
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
************************************************************************************
*/
Init_Data Init_Data_Equipment;
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0>ֽڶ<D6BD><DAB6><EFBFBD>
Note:
-------------------------------------------------------------*/
void EEPROM_ReadBytes(u16 Addr,u8 *Buffer,u16 Length)
{
u8 *wAddr;
wAddr=(u8 *)(EEPROM_BASE_ADDR+Addr);
while(Length--){
*Buffer++=*wAddr++;
}
}
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
Note:
-------------------------------------------------------------*/
void EEPROM_ReadWords(u16 Addr,u16 *Buffer,u16 Length)
{
u32 *wAddr;
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
while(Length--){
*Buffer++=*wAddr;
wAddr+=2;
}
}
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>˫<EFBFBD><CBAB>
Note:
-------------------------------------------------------------*/
void EEPROM_ReadDWords(u16 Addr,u32 *Buffer,u16 Length)
{
u32 *wAddr;
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
while(Length--){
*Buffer++=*wAddr;
wAddr+=4;
}
}
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0>ֽ<EFBFBD>д<EFBFBD><D0B4>
Note:
-------------------------------------------------------------*/
void EEPROM_WriteBytes(u16 Addr,u8 *Buffer,u16 Length)
{
u8 *wAddr;
wAddr=(u8 *)(EEPROM_BASE_ADDR+Addr);
FLASH->PEKEYR=PEKEY1; //unlock
FLASH->PEKEYR=PEKEY2;
while(FLASH->PECR&FLASH_PECR_PELOCK);
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
while(Length--){
*wAddr++=*Buffer++;
while(FLASH->SR&FLASH_SR_BSY);
}
FLASH->PECR|=FLASH_PECR_PELOCK;
}
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>д<EFBFBD><D0B4>
Note: <20>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
-------------------------------------------------------------*/
void EEPROM_WriteWords(u16 Addr,u16 *Buffer,u16 Length)
{
u32 *wAddr;
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
FLASH->PEKEYR=PEKEY1; //unlock
FLASH->PEKEYR=PEKEY2;
while(FLASH->PECR&FLASH_PECR_PELOCK);
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
while(Length--){
*wAddr=*Buffer++;
wAddr+=2;
while(FLASH->SR&FLASH_SR_BSY);
}
FLASH->PECR|=FLASH_PECR_PELOCK;
}
/*------------------------------------------------------------
Func: EEPROM<4F><4D><EFBFBD>ݰ<EFBFBD>˫<EFBFBD><CBAB>д<EFBFBD><D0B4>
Note:
-------------------------------------------------------------*/
void EEPROM_WriteDWords(u16 Addr,u32 *Buffer,u16 Length)
{
u32 *wAddr;
wAddr=(u32 *)(EEPROM_BASE_ADDR+Addr);
FLASH->PEKEYR=PEKEY1; //unlock
FLASH->PEKEYR=PEKEY2;
while(FLASH->PECR&FLASH_PECR_PELOCK);
FLASH->PECR|=FLASH_PECR_FTDW; //not fast write
while(Length--){
*wAddr=*Buffer++;
wAddr+=4;
while(FLASH->SR&FLASH_SR_BSY);
}
FLASH->PECR|=FLASH_PECR_PELOCK;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Read_Equipment_Par()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: EERPOM<4F><4D>ȡ<EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><>Init_Data_Equipmend
*********************************************************************************************************
*/
Init_Data Read_Equipment_Par(void)
{
Init_Data Init_Data_Equipmend={'\0'};
EEPROM_ReadBytes(0, (u8*)Init_Data_Equipmend.Bc25_Ip,Bc25_Ip_len);
EEPROM_ReadBytes(20, (u8*)Init_Data_Equipmend.Bc25_Port,Bc25_Port_len);
EEPROM_ReadBytes(30, (u8*)Init_Data_Equipmend.ESP8266_AP_Ports,ESP8266_AP_Ports_len);
EEPROM_ReadBytes(60, (u8*)Init_Data_Equipmend.ESP8266_AP_PWDs,ESP8266_AP_PWDs_len);
EEPROM_ReadBytes(40, (u8*)Init_Data_Equipmend.ESP8266_AP_SSIDs,ESP8266_AP_SSIDs_len);
EEPROM_ReadBytes(100, (u8*)Init_Data_Equipmend.Measure_Interval,Measure_Interval_len);
EEPROM_ReadBytes(110, (u8*)Init_Data_Equipmend.Pub_Mode,Pub_Mode_len);
EEPROM_ReadBytes(120, (u8*)Init_Data_Equipmend.Pub_Time,Pub_Time_len);
EEPROM_ReadBytes(130, (u8*)Init_Data_Equipmend.Equipment_ID,Equipment_ID_len);
EEPROM_ReadBytes(150, (u8*)Init_Data_Equipmend.appointment_time,appointment_time_len);
EEPROM_ReadBytes(166, (u8*)Init_Data_Equipmend.measure_mode,measure_mode_len);
EEPROM_ReadBytes(185, &Init_Data_Equipmend.par_change,1);
EEPROM_ReadBytes(186, &Init_Data_Equipmend.Bc25_Send_Header,1);
EEPROM_ReadBytes(240, (u8*)Init_Data_Equipmend.IOT_Username,IOT_Username_len);
EEPROM_ReadBytes(260, (u8*)Init_Data_Equipmend.IOT_Password,IOT_Password_len);
EEPROM_ReadBytes(280, (u8*)Init_Data_Equipmend.IOT_Theme_name,IOT_Theme_name_len);
return Init_Data_Equipmend;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Write_Equipment_Par()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD> Init_Data_Equipmend
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void Write_Equipment_Par(Init_Data Init_Data_Equipmend)
{
Clear_eeprom_par();
EEPROM_WriteBytes(0, (u8*)Init_Data_Equipmend.Bc25_Ip,strlen(Init_Data_Equipmend.Bc25_Ip));
EEPROM_WriteBytes(20, (u8*)Init_Data_Equipmend.Bc25_Port,strlen(Init_Data_Equipmend.Bc25_Port));
EEPROM_WriteBytes(30, (u8*)Init_Data_Equipmend.ESP8266_AP_Ports,strlen(Init_Data_Equipmend.ESP8266_AP_Ports));
EEPROM_WriteBytes(60, (u8*)Init_Data_Equipmend.ESP8266_AP_PWDs,strlen(Init_Data_Equipmend.ESP8266_AP_PWDs));
EEPROM_WriteBytes(40, (u8*)Init_Data_Equipmend.ESP8266_AP_SSIDs,strlen(Init_Data_Equipmend.ESP8266_AP_SSIDs));
EEPROM_WriteBytes(100, (u8*)Init_Data_Equipmend.Measure_Interval,strlen(Init_Data_Equipmend.Measure_Interval));
EEPROM_WriteBytes(110, (u8*)Init_Data_Equipmend.Pub_Mode,strlen(Init_Data_Equipmend.Pub_Mode));
EEPROM_WriteBytes(120, (u8*)Init_Data_Equipmend.Pub_Time,strlen(Init_Data_Equipmend.Pub_Time));
EEPROM_WriteBytes(130, (u8*)Init_Data_Equipmend.Equipment_ID,strlen(Init_Data_Equipmend.Equipment_ID));
EEPROM_WriteBytes(150, (u8*)Init_Data_Equipmend.appointment_time,appointment_time_len);
EEPROM_WriteBytes(166, (u8*)Init_Data_Equipmend.measure_mode,1);
EEPROM_WriteBytes(185, &Init_Data_Equipmend.par_change,1);
EEPROM_WriteBytes(185, &Init_Data_Equipmend.Bc25_Send_Header,1);
EEPROM_WriteBytes(140,&Par_store_flag,1);
EEPROM_WriteBytes(240, (u8*)Init_Data_Equipmend.IOT_Username,strlen(Init_Data_Equipmend.IOT_Username));
EEPROM_WriteBytes(260, (u8*)Init_Data_Equipmend.IOT_Password,strlen(Init_Data_Equipmend.IOT_Password));
EEPROM_WriteBytes(280, (u8*)Init_Data_Equipmend.IOT_Theme_name,strlen(Init_Data_Equipmend.IOT_Theme_name));
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: clear_Init_Data_Equipment()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void clear_Init_Data_Equipment(void)
{
memset(Init_Data_Equipment.Bc25_Ip,0,Bc25_Ip_len);
memset(Init_Data_Equipment.Bc25_Port,0,Bc25_Port_len);
memset(Init_Data_Equipment.ESP8266_AP_Ports,0,ESP8266_AP_Ports_len);
memset(Init_Data_Equipment.ESP8266_AP_PWDs,0,ESP8266_AP_PWDs_len);
memset(Init_Data_Equipment.ESP8266_AP_SSIDs,0,ESP8266_AP_SSIDs_len);
memset(Init_Data_Equipment.Measure_Interval,0,Measure_Interval_len);
memset(Init_Data_Equipment.Pub_Mode,0,Pub_Mode_len);
memset(Init_Data_Equipment.Pub_Time,0,Pub_Time_len);
memset(Init_Data_Equipment.Equipment_ID,0,Equipment_ID_len);
memset(Init_Data_Equipment.appointment_time,0,appointment_time_len);
memset(Init_Data_Equipment.measure_mode,0,measure_mode_len);
memset(Init_Data_Equipment.IOT_Username,0,IOT_Username_len);
memset(Init_Data_Equipment.IOT_Password,0,IOT_Password_len);
memset(Init_Data_Equipment.IOT_Theme_name,0,IOT_Theme_name_len);
Init_Data_Equipment.par_change=0;
Init_Data_Equipment.Bc25_Send_Header=0;
// Write_Equipment_Par(Init_Data_Equipment);
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Clear_eeprom_par()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD>EEPROM
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void Clear_eeprom_par(void)
{
uint8_t data=0x00;
int i=0;
for(i=0;i<300;i++)
{
EEPROM_WriteBytes(i,&data,1);
}
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: Write_Factory_Par()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><><EFBFBD><EFBFBD>
*********************************************************************************************************
*/
void Write_Factory_Par(void)
{
clear_Init_Data_Equipment();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B4A2>
sprintf(Init_Data_Equipment.Bc25_Ip,"%s","\"39.105.230.197\"");
sprintf(Init_Data_Equipment.Bc25_Port,"%s","1883");
// sprintf(Init_Data_Equipment.Bc25_Ip,"%s","\"219.238.240.58\"");
// sprintf(Init_Data_Equipment.Bc25_Port,"%s","9027");
sprintf(Init_Data_Equipment.ESP8266_AP_Ports,"%s","8080");
sprintf(Init_Data_Equipment.ESP8266_AP_PWDs,"%s","88888888");
sprintf(Init_Data_Equipment.ESP8266_AP_SSIDs,"%s","licawifi");
sprintf(Init_Data_Equipment.Measure_Interval,"%s","00001");
sprintf(Init_Data_Equipment.Pub_Mode,"%s","00");
sprintf(Init_Data_Equipment.Pub_Time,"%s","5");
sprintf(Init_Data_Equipment.Equipment_ID,"%s","123456789");
sprintf(Init_Data_Equipment.appointment_time,"%s","20221130114400");
sprintf(Init_Data_Equipment.measure_mode,"%s","0");
sprintf(Init_Data_Equipment.IOT_Username,"%s","\"lichao\"");
sprintf(Init_Data_Equipment.IOT_Password,"%s","\"910517@lc\"");
sprintf(Init_Data_Equipment.IOT_Theme_name,"%s","SM-1000M");
Init_Data_Equipment.par_change=0;
Init_Data_Equipment.Bc25_Send_Header=0;
Write_Equipment_Par(Init_Data_Equipment);
Par_store_flag=0x01;
EEPROM_WriteBytes(140,&Par_store_flag,1);
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: get_meaidv()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><>measurt_idv_set*60;
*********************************************************************************************************
*/
u32 get_meaidv(void)
{
uint32_t measurt_idv_set;
measurt_idv_set= hexToDec(Init_Data_Equipment.Measure_Interval);
return measurt_idv_set*60;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: get_pubidv()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><>ȡԶ<C8A1><D4B6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S
* <09><> <20><> <20><><EFBFBD><EFBFBD>
* <20><> <20><> <20><>pub_idv_set*60
*********************************************************************************************************
*/
u32 get_pubidv(void)
{
uint32_t pub_idv_set;
pub_idv_set=hexToDec(Init_Data_Equipment.Pub_Time);
return pub_idv_set*60 + 60*2;
}
/*
*********************************************************************************************************
* <09><> <20><> <20><>: hexToDec()
* <09><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>: <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת10<31><30><EFBFBD><EFBFBD>
* <09><> <20><> <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>shex
* <20><> <20><> <20><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mid
*********************************************************************************************************
*/
u16 hexToDec(char *shex)
{
u16 len,i,mid=0;
len=strlen(shex);
if(len>8)return 0;
for(i=0;i<len;i++)
{
if (shex[i] >= '0' && shex[i] <= '9')
{
if(i>0)mid*=10;
//mid *= (u16)pow(10,1);
mid += (shex[i] - '0');
}
else
return 0;
}
return mid;
}
/***************************** END OF FILE *********************************/