本帖最后由 上官金虹 于 2011-8-8 21:30 编辑
- #include "stm8s_conf.h"
- void __eeprom_write_8(unsigned short addr_eep,unsigned char data)
- {
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- FLASH_Unlock(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep, data);
-
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- FLASH_Lock(FLASH_MEMTYPE_DATA);
- }
- void __eeprom_write_16(unsigned short addr_eep,unsigned short data)
- {
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- FLASH_Unlock(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep, data/256);
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep+1, data%256);
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_Lock(FLASH_MEMTYPE_DATA);
- }
- void __eeprom_write_32(unsigned short addr_eep,unsigned long data)
- {
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- FLASH_Unlock(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep, (unsigned char)(data>>24));
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep+1, (unsigned char)(data>>16));
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep+2, (unsigned char)(data>>8));
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_ProgramByte(addr_eep+3, (unsigned char)(data>>0));
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
-
- FLASH_Lock(FLASH_MEMTYPE_DATA);
- }
- void __eeprom_write_many(unsigned short addr_eep,unsigned short size,unsigned short dummy,unsigned short addr_ram)
- {
-
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- FLASH_Unlock(FLASH_MEMTYPE_DATA);
-
- for(unsigned short i=0;i<size;i++)
- {
- FLASH_ProgramByte(addr_eep+i, *((unsigned char *)(addr_ram)+i));
- FLASH_WaitForLastOperation(FLASH_MEMTYPE_DATA);
- }
-
- FLASH_Lock(FLASH_MEMTYPE_DATA);
- }
- volatile __eeprom __no_init char eep_u8;
- volatile __eeprom __no_init short eep_u16;
- volatile __eeprom __no_init long eep_u32;
- void main( void )
- {
- eep_u8=123;
- eep_u16=12345;
- eep_u32=123456789;
-
- while(1);
- }
|