eeprom stm8l 擦除 读写_[STM8L]EEPROM操作读与写
原標題:[STM8L]EEPROM操作讀與寫
帶有片上EEPROM,常用來保存參數,事實上STM8L整個程序存儲區都可以用于作為EEPROM,只是默認情況下被閉了。
不同型號的STM8L器件其內部默認劃分的EEPROM區域都是從0x1000地址開始,以下為STM8LXX的EEPROM讀寫例:
#define EEPROM_STARTADDR 0x1000
//EEPROM讀數據方法
uint8 EEPROM_Read(uint16 Addr,uint8 *RxBuffer,uint8 Length)
{
uint16 T=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)return 0;
while(Length--){
*RxBuffer++=*EEP++;
}
return 1;
}
//EEPROM讀數據方法
uint8 EEPROM_Write(uint16 Addr,uint8 *RxBuffer,uint8 Lenth)
{
uint16 T=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)return 0;
while(Lenth--){
*EEP++=*RxBuffer++;
T=0;
while((!(FLASH_IAPSR&S2))&(T<0xFFFF))T++;
if(T==0xFFFF)return 0;
}
FLASH_IAPSR&=~S3;
return 1;
}
STM8LXX核對數據,程序存儲器進行統一編址,所以可以直接對EEPROM進行讀寫,之間需要進行解鎖操作,通過FLASH_DUKR完成,寫入特定序列的密碼即可,由于EEPROM的寫入速度較慢,所以需要進行等待,判斷其上一步工作是否已完成。實測發現,當CPU主頻變化時,其等待時間差別較大,使用時應注意,并且需要加入等待超時處理。
責任編輯:
總結
以上是生活随笔為你收集整理的eeprom stm8l 擦除 读写_[STM8L]EEPROM操作读与写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 家用电风扇常见故障的检修家用电风扇常见故
- 下一篇: 如何修复老旧电脑卡顿如何修复老旧电脑卡顿