日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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操作读与写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。