
我这个在我开发板上验证过的, 能读能写 这个代码一般人我不告诉他的 我用的是IAR 初使部分 我用的也是STM8L151K4T6 //-----------------------------EEPROM------------------------------------------------------, d3 A: r' L r #define MASS_KEY1 0xae( W( G( v# L5 B1 t; v. ` #define MASS_KEY2 0x56 #define EEP_BASE 0x1000 void EEPROM_Init(void)' n' i) o H& I* D { FLASH->CR1 = 0x00;( R- ~! D7 y& { FLASH->CR2 = 0x00;1 {4 Z4 I& q/ t, A, } FLASH->DUKR = MASS_KEY1; FLASH->DUKR = MASS_KEY2; //密钥使能8 v" {9 E0 G+ @: C) a* b- B while(!(FLASH->IAPSR&0x08))0 h4 |, n5 N; N' R* a { ; /*等待写保护解锁*/* X, _, k& u8 ]( i5 w3 p4 S% N }/ k* i; u2 z& G6 |, t$ H2 Y1 r }* R$ H3 P' ?$ P //写函数部分 void EEPROM_Write(u8 addr,u8 dat)2 ^0 R1 w/ l7 D, x k# ] |7 H { *((u8*)(addr + EEP_BASE)) = dat; while(!(FLASH->IAPSR&0x04)) { ; /*等待写完成*/ //这里加等写0x02会一直过不去,死机,改成0x04 OK M% Q& z$ [7 M$ k }9 n& r. K& `! w8 M } //读函数部分 u8 EEPROM_Read(u8 addr) {9 w9 e- g# ~1 t3 O return *((u8*)(EEP_BASE + addr));: E5 m9 M6 o: a+ J } //---------------------------------------------------------------------------------- @+ M3 r1 f" E8 Q, f0 c( a 5 w5 S" w- v& ^) v( r# ^ l0 Y' B 写部分 3句完美搞定 //---------------------------------------------- EEPROM_Init();//FLASH解锁 EEPROM_Write(0X00,model);//0x00 是地址,MODE1是写的内容这是自定义变量哦2 `% f, o9 ~$ i5 J4 ]7 V EEPROM_PROTECT_ENABLE();// 开启写保护/ c. z+ }( [. X- V; `0 Z ' L3 j+ R9 S( \. `$ }* Y 读部分,一句搞定 收工% V! |, Y! j( L) a5 i; Z //------------------------------------- model=EEPROM_Read(0X00);//MODE1 是自定义的变量哦 复制代码 |