久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 17448|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM8L的EEPROM讀寫原理及例程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140343 發(fā)表于 2016-10-10 00:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STM8L103C6擁有1KB的片上EEPROM,可以用來(lái)存儲(chǔ)程序需要用到的參數(shù),就不需要額外使用24C02這樣的外部存儲(chǔ)器了.
同時(shí),和24C02比起來(lái),STM8L的片上EEPROM操作更簡(jiǎn)單,可以直接對(duì)地址進(jìn)行操作,進(jìn)行數(shù)據(jù)讀寫.
下圖是STM8L閃存和EEPROM的地址分配圖,可以看到EEPROM的起始地址為0x001000,結(jié)束地址為0x0013FF.共1024個(gè)地址空間,所以EEPROM的容量為1KB.

EEPROM在上電復(fù)位后是寫保護(hù)的,在向其中寫入數(shù)據(jù)時(shí),需要解鎖,關(guān)閉寫保護(hù).解鎖流程為:
①第一次向FLASH_DUKR寫入密鑰0xAE
②第二次向FLASH_DUKR寫入密鑰0x56
兩次都寫入正確后,寫保護(hù)功能被關(guān)閉,可以對(duì)EEPROM區(qū)域進(jìn)行寫操作.解鎖成功后,DUL位會(huì)被置位,在寫完密鑰后,可以讀取DUL位來(lái)判斷有沒有解鎖成功.
在向EEPROM寫數(shù)據(jù)時(shí),單片機(jī)內(nèi)部會(huì)產(chǎn)生高壓對(duì)EEPROM寫操作,如果這個(gè)時(shí)候被中斷打斷,會(huì)造成單片機(jī)異常,所以寫操作時(shí),需要關(guān)閉總中斷,防止意外發(fā)生.
本例程,先向EEPROM的四個(gè)地址各寫入了一個(gè)字節(jié)的數(shù)據(jù),然后從這個(gè)四個(gè)地址讀取出這些數(shù)據(jù),和寫入數(shù)據(jù)進(jìn)行對(duì)比.從下圖可以看到,讀出數(shù)據(jù)和寫入數(shù)據(jù)完全一致.

  1. /****************************************************************************************

  2. *開發(fā)環(huán)境:IAR for stm8 v6.5.3

  3. *硬件平臺(tái):STM8L-DISCOVERY

  4. *功能說(shuō)明:本例程,先向EEPROM的四個(gè)連續(xù)地址寫入四個(gè)字節(jié)數(shù)據(jù),然后讀取出來(lái),與寫入數(shù)據(jù)對(duì)比

  5. *作    者:茗風(fēng)

  6. ****************************************************************************************/

  7. #include"iostm8l152c6.h"

  8. #include"stdint.h"

  9. #define EEPROM_STARTADDR 0x1000


  10. /******************************************************************************************************

  11. *名    稱:  void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)

  12. *功    能: 向EEPROM指定地址寫入一字節(jié)數(shù)據(jù)

  13. *入口參數(shù): Addr:存放數(shù)據(jù)的偏移地址

  14. *           Data:待寫入的數(shù)據(jù)

  15. *出口參數(shù):無(wú)

  16. *范    例:

  17. ******************************************************************************************************/

  18. void EEPROM_WriteByte(uint16_t Addr,uint8_t Data)

  19. {

  20.    uint8_t  *Ptr_SegAddr; //Segment pointer

  21.    Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr);  //Initialize  pointer

  22.    FLASH_DUKR=0xAE;

  23.    FLASH_DUKR=0x56;

  24.    while(!FLASH_IAPSR_DUL);//如果DUL沒有置位,說(shuō)明解鎖不成功,最好加入超時(shí)判斷

  25.    asm("sim");//關(guān)閉中斷

  26.    *Ptr_SegAddr=Data; //指定地址,寫1 字節(jié)

  27.    while(!FLASH_IAPSR_EOP);//等待寫操作完成,最好加入超時(shí)判斷

  28.    asm("rim");//打開中斷

  29.    FLASH_IAPSR_DUL=0;//上鎖,對(duì)DATA EEPROM寫保護(hù)

  30.    ////////////////////

  31. }

  32. /******************************************************************************************************

  33. *名    稱:uint8_t EEPROM_ReadByte(uint8_t Addr)

  34. *功    能:從EEPROM中讀取一個(gè)字節(jié)數(shù)據(jù)

  35. *入口參數(shù):Addr:存放數(shù)據(jù)的偏移地址

  36. *出口參數(shù):Data:讀回的數(shù)據(jù)

  37. *說(shuō)    明:無(wú)

  38. *范    例:無(wú)

  39. ******************************************************************************************************/

  40. uint8_t EEPROM_ReadByte(uint16_t Addr)

  41. {

  42.    uint16_t Data=0;

  43.    uint8_t *Ptr_SegAddr;

  44.    Ptr_SegAddr = (uint8_t *)(EEPROM_STARTADDR+Addr);  //Initialize  pointer

  45.    Data=*Ptr_SegAddr;

  46.    return Data;

  47. }


  48. void main(void)

  49. {

  50.   static  uint8_t  t1=0,t2=0,t3=0,t4=0;

  51.   EEPROM_WriteByte(0x00,0x40);

  52.   EEPROM_WriteByte(0x01,0x41);

  53.   EEPROM_WriteByte(0x02,0x42);

  54.   EEPROM_WriteByte(0x03,0x43);

  55.   

  56.   t1=EEPROM_ReadByte(0x00);

  57.   t2=EEPROM_ReadByte(0x01);

  58.   t3=EEPROM_ReadByte(0x02);

  59.   t4=EEPROM_ReadByte(0x03);

  60. //  asm("rim");               //enable interrupts

  61.   while(1)

  62.   {

  63. //    asm("wfi");

  64.   }

  65. }

復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1097756 發(fā)表于 2024-3-10 15:02 | 只看該作者
很好的程序
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲男人天堂网 | 日本精品中文字幕 | 亚洲综合视频在线观看 | 激情视频网 | 激情做爰呻吟视频舌吻 | 91视频18| 亚洲欧美视频在线 | 男女操网站 | 黄色在线免费观看视频 | 艳妇臀荡乳欲伦交换h漫 | av免费在线观看网站 | 99精品久久久 | 国产一区欧美 | 欧美一级在线观看 | 三年中文在线观看免费大全中国 | 五月伊人网 | 成人在线网 | 国产成人黄色 | 中文在线观看视频 | 日本a网站 | www.狠狠操 | 日韩av一区二区三区四区 | 国产第一av | 91亚洲精品乱码久久久久久蜜桃 | 伊人久久综合 | 久热在线| 国产网站在线 | 黄色高清网站 | 日韩国产精品视频 | 中文字幕在线观看免费 | 午夜在线观看视频网站 | 狠狠干在线视频 | 欧美手机在线 | 日韩一级在线 | 一本色道久久综合亚洲精品酒店 | 国产第三页| 亚洲欧美一区二区三区四区 | 一区二区三区四区在线播放 | 91亚洲国产成人精品性色 | 国产精品偷乱一区二区三区 | 黄色免费大片 |