|
我这个在我开发板上验证过的, 能读能写 这个代码一般人我不告诉他的 我用的是IAR 初使部分 我用的也是STM8L151K4T6: V- ?6 N0 I& S6 | //-----------------------------EEPROM------------------------------------------------------& h0 c% [, z5 K+ z. Y #define MASS_KEY1 0xae #define MASS_KEY2 0x56, X5 H9 e9 M$ \2 j #define EEP_BASE 0x1000& R* j* @) I5 Q6 @( q5 @. e void EEPROM_Init(void)) X2 I% ?3 ], S; n% ?* g { FLASH->CR1 = 0x00;7 ]+ l1 s5 c8 x6 \) O9 _( Y FLASH->CR2 = 0x00; FLASH->DUKR = MASS_KEY1; FLASH->DUKR = MASS_KEY2; //密钥使能( A- @& s8 s+ d5 z while(!(FLASH->IAPSR&0x08))1 _/ \! {, ]4 t7 U {/ C9 v7 G% c% p3 q ; /*等待写保护解锁*/8 E4 x7 B% f2 C! n/ {% A* s" t } }6 |$ K. I- `& [# t9 p8 G //写函数部分5 I- _$ t8 B7 T void EEPROM_Write(u8 addr,u8 dat): L- {8 A6 l! `, [4 z6 A) Q {; l" X% j7 U7 W6 ~ *((u8*)(addr + EEP_BASE)) = dat; while(!(FLASH->IAPSR&0x04)) {% L0 R: K. R; C6 v! o+ _ ; /*等待写完成*/ //这里加等写0x02会一直过不去,死机,改成0x04 OK }3 J5 h" O& I% W4 Z/ m6 f }/ U' S: Z8 m' K' o1 V% m7 Q% G //读函数部分7 P5 T d. f% ~( w7 ` u8 EEPROM_Read(u8 addr). z/ J- B) E/ I8 n3 t* `& e5 r { return *((u8*)(EEP_BASE + addr)); }! H$ x( B) t$ M% N //---------------------------------------------------------------------------------/ f& ]6 L) P* ~/ ~6 X& M3 M 8 W4 i1 S' v" c4 w' B& ~0 _ 写部分 3句完美搞定 //---------------------------------------------- EEPROM_Init();//FLASH解锁 EEPROM_Write(0X00,model);//0x00 是地址,MODE1是写的内容这是自定义变量哦 EEPROM_PROTECT_ENABLE();// 开启写保护: D- x/ g4 K; d o" l& `1 s* | ! g% S# m( E H" O9 L: i 读部分,一句搞定 收工 //-------------------------------------( b( y, _# @2 b( S4 O model=EEPROM_Read(0X00);//MODE1 是自定义的变量哦 复制代码7 W- x& {4 a; {; d$ J |
微信公众号
手机版