20260324
This commit is contained in:
115
IAPV1.1/Driver/eeprom/eeprom.c
Normal file
115
IAPV1.1/Driver/eeprom/eeprom.c
Normal file
@ -0,0 +1,115 @@
|
||||
/*********<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>дͨ<D0B4><CDA8>***********/
|
||||
|
||||
#include "eeprom.h"
|
||||
#include "bsp.h"
|
||||
#include "stm32l1xx_flash.h"
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user