• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 網絡與存儲 > 設計應用 > stm8s開發(九) EEPROM的使用:使用EEPROM存儲數據!

    stm8s開發(九) EEPROM的使用:使用EEPROM存儲數據!

    作者: 時間:2017-09-25 來源:網絡 收藏

      是單片機應用系統中經常會用到的存儲器,它主要用來保存一些掉電后需要保持不變的數據。在以前的單片機系統中,通常都是在單片機外面再擴充一個芯片,這種方法除了增加成本外,也降低了可靠性。現在,很多單片機的公司都推出了集成有小容量的單片機,這樣就方便了使用,降低了成本,提高了可靠性。

    本文引用地址:http://www.czjhyjcfj.com/article/201709/364741.htm

      STM8單片機芯片內部也集成有EEPROM,容量從640字節到2K字節。最為特色的是,在STM8單片機中,對EEPROM的訪問就象常規的RAM一樣,非常方便。EEPROM的地址空間與內存是統一編址的,地址從004000H開始,大小根據不同的芯片型號而定。

      為了管理方便,定義EEPROM的地址

      #define EP_HEADER_ADDR 0x4000

      操作EEPROM需要初始化,也就是FLASH解鎖,解鎖需要兩個密鑰,順序還不能調換。

      void EEPROM_init(void)

      {

      do

      {

      FLASH_CR1=0x00;

      FLASH_CR2=0x00;

      FLASH_NCR2=0xFF;

      FLASH_DUKR = 0xAE; // 寫入第一個密鑰

      FLASH_DUKR = 0x56; // 寫入第二個密鑰

      } while((FLASH_IAPSR & 0x08) == 0); // 若解鎖未成功,則重新再來

      }

      還有一個加鎖的功能,一般來說操作完EEPROM之后需要加鎖保護。

      void EEPROM_lock(void)

      {

      FLASH_IAPSR=(u8)(~0x08); //重新上鎖

      }

      接下來就是兩個讀寫的基本操作了。

      //EEPROM指定地址寫入一個數據 addr:相對地址 dat:數據

      void EEPROM_write(unsigned char addr, unsigned char dat)

      {

      unsigned char *p;

      p=(unsigned char *)(EP_HEADER_ADDR + addr);

      *p=dat;

      while(!(FLASH_IAPSR&0x04)); //等待寫操作成功

      }

      //EEPROM指定地址讀出一個數據 addr:相對地址

      unsigned char EEPROM_read(unsigned char addr)

      {

      unsigned char *p;

      p=( unsigned char *)(EP_HEADER_ADDR + addr);

      return *p;

      }

      這里給的地址是絕對地址,函數內有個偏移地址的操作(偏移4000H)。

      炒雞簡單是不?

      有關EEPROM和FLASH的介紹:http://blog.csdn.net/yuanlulu/article/details/6163106

      附上在IAR環境下的項目工程,包括了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代碼。

      http://download.csdn.NET/detail/devintt/9454188



    關鍵詞: stm8s EEPROM

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 宜阳县| 井冈山市| 泸溪县| 舒兰市| 北川| 中方县| 呈贡县| 通辽市| 佛学| 湛江市| 寿阳县| 迁安市| 虹口区| 乐清市| 嘉兴市| 阿城市| 呼和浩特市| 横山县| 铜山县| 繁峙县| 三穗县| 鹤山市| 太湖县| 北流市| 浑源县| 大邑县| 平武县| 墨玉县| 保山市| 车致| 望城县| 兴隆县| 烟台市| 桂东县| 柘城县| 永胜县| 深水埗区| 天峻县| 枣庄市| 普格县| 金川县|