116 lines
2.7 KiB
C
116 lines
2.7 KiB
C
|
|
/*********<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<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD>ֽڶ<EFBFBD><EFBFBD><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<EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><EFBFBD><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<EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>
|
|||
|
|
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<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD>ֽ<EFBFBD>д<EFBFBD><EFBFBD>
|
|||
|
|
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<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
|||
|
|
Note: <EFBFBD>ֵ<EFBFBD><EFBFBD><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<EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>˫<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>
|
|||
|
|
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;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|