eeprom stm8l 擦除 读写_[STM8L]EEPROM操作读与写

本文介绍了如何在STM8L微控制器上进行EEPROM的读写操作。提供了读取和写入数据的示例代码,强调了在操作过程中需要进行的解锁步骤以及根据CPU主频调整的等待时间处理。
摘要由CSDN通过智能技术生成

STM8L带有片上EEPROM,常用来保存参数,事实上STM8L整个程序存储区都可以用于作为EEPROM,只是默认情况下被闭了。

不同型号的STM8L器件其内部默认划分的EEPROM区域都是从0x1000地址开始,以下为STM8LXX的EEPROM读写例:

#defineEEPROM_STARTADDR0x1000

//EEPROM读数据方法

uint8EEPROM_Read(uint16Addr,uint8*RxBuffer,uint8Length)

{

uint16T=0;

uint8*EEP;

EEP=(uint8*)(EEPROM_STARTADDR+Addr);

FLASH_DUKR=0xAE;

FLASH_DUKR=0x56;

FLASH_CR2=0x00;

while((!(FLASH_IAPSR&S3))&(T<0xFFFF))T++;

if(T==0xFFFF)return0;

while(Length--){

*RxBuffer++=*EEP++;

}

return1;

}

//EEPROM读数据方法

uint8EEPROM_Write(uint16Addr,uint8*RxBuffer,uint8Lenth)

{

uint16T=0;

uint8*EEP;

EEP=(uint8*)(EEPROM_STARTADDR+Addr);

FLASH_DUKR=0xAE;

FLASH_DUKR=0x56;

FLASH_CR2=0x00;

while((!(FLASH_IAPSR&S3))&(T<0xFFFF))T++;

if(T==0xFFFF)return0;

while(Lenth--){

*EEP++=*RxBuffer++;

T=0;

while((!(FLASH_IAPSR&S2))&(T<0xFFFF))T++;

if(T==0xFFFF)return0;

}

FLASH_IAPSR&=~S3;

return1;

}

STM8LXX核对数据,程序存储器进行统一编址,所以可以直接对EEPROM进行读写,之间需要进行解锁操作,通过FLASH_DUKR完成,写入特定序列的密码即可,由于EEPROM的写入速度较慢,所以需要进行等待,判断其上一步工作是否已完成。实测发现,当CPU主频变化时,其等待时间差别较大,使用时应注意,并且需要加入等待超时处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值