0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32內(nèi)部EEPROM的使用方法

CHANBAEK ? 來源:羊羊課代表 ? 作者:Dingdong ? 2023-10-23 17:04 ? 次閱讀

STM32內(nèi)部的EEPROM其實(shí)是Flash模擬的,也就是會(huì)占用程序的存儲(chǔ)空間,下載的程序也放在這個(gè)地方,不過L系列單獨(dú)給eeprom分配的有位置,理論上所有的STM32都可以使用這個(gè)方法,但是要注意程序越大占用的空間越多,不要和程序覆蓋在一起。

大家可能使用的型號(hào)都不同,我們首先在官網(wǎng)下載對(duì)應(yīng)型號(hào)的參考手冊(cè)

網(wǎng)址:意法半導(dǎo)體STM | STM32/STM8微控制器 | MCU單片機(jī)

圖片

STEP.2

打開pdf文檔找到"Flash program memory and data EEPROM (FLASH)"

圖片

這里有詳細(xì)的說明

找到對(duì)應(yīng)的內(nèi)存的設(shè)備

示意:

圖片

L071是196KB的所以是這個(gè)表格

圖片

STEP.3

開始編程(基于HAL庫)

定義一個(gè)函數(shù),像這樣:

圖片

再由參考手冊(cè)宏定義一下這兩個(gè)eeprom的地址:

PS:如果是沒有eeprom的stm32,只要程序不是足夠大,可以把地址改成Flash的最后幾頁(避免和程序沖突導(dǎo)致錯(cuò)誤),解鎖上鎖函數(shù)也要分別改為

HAL_FLASH_Unlock(void);

HAL_FLASH_Lock(void);

每次對(duì)其寫數(shù)據(jù)要先解鎖,用完再上鎖。

圖片

讀寫函數(shù):

圖片

這里讀寫的是8bit的數(shù)據(jù),如果要用16,32bit的數(shù)據(jù)類型

直接改數(shù)據(jù)類型就可以啦!

使用方法:

圖片

代碼:

#ifndef __EEPROM_H
#define __EEPROM_H


#include "main.h"
//MAX_3KB
#define MCU_Start_Address_Bank1 0x08080000
//MAX_3KB
#define MCU_Start_Address_Bank2 0x08080C00


void Flash_Write(uint32_t Address,uint8_t *Data,uint8_t Length);
void Flash_Read(uint32_t Address,uint8_t *Data,uint8_t Length);




#endif


#include "eeprom.h"
//max 3KB//               地址              數(shù)據(jù)         長度*/
void Flash_Write(uint32_t Address,uint8_t *Data,uint8_t Length)
{
  HAL_FLASHEx_DATAEEPROM_Unlock();//解鎖Flash

  for(uint8_t i=0;i< Length;i++)
  {  
    /*      數(shù)據(jù)類型             數(shù)據(jù)類型       */
    *(__IO uint8_t *)Address = (uint8_t) Data[i];
    Address+=1;
  }

  HAL_FLASHEx_DATAEEPROM_Lock();//上鎖Flash
}//羊羊課代表


//max 3KB//               地址              數(shù)據(jù)         長度*/
void Flash_Read(uint32_t Address,uint8_t *Data,uint8_t Length)
{
  for(uint8_t i=0;i< Length;i++)
  {  
    /*              數(shù)據(jù)類型                */    
    Data[i]=*(__IO uint8_t *)Address;
    Address+=1;
  }
}//羊羊課代表
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7394

    瀏覽量

    150624
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44452

    瀏覽量

    630797
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16796

    瀏覽量

    349325
  • STM32
    +關(guān)注

    關(guān)注

    2262

    文章

    10846

    瀏覽量

    353676
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1006

    瀏覽量

    81218
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何操作芯片內(nèi)部EEprom讀寫數(shù)據(jù)

    EEprom,或者***EEprom芯片)硬件:STM32L051C8T6最小系統(tǒng)板軟件:Keil 5.29+ STM32CubeMX6.2.1一、
    發(fā)表于 08-09 06:12

    讀寫51單片機(jī)內(nèi)部EEPROM方法

    文檔共包含三個(gè)程序。第一個(gè)程序最簡單易懂,看懂了基本就會(huì)讀寫51單片機(jī)內(nèi)部EEPROM了。第二個(gè)程序和第一個(gè)讀寫EEPROM原理差不多,包含有LCD1602操作方法,有寫字符串的
    發(fā)表于 11-18 07:23

    STM32L0內(nèi)部EEPROM寫讀怎么實(shí)現(xiàn)?

    STM32L0內(nèi)部EEPROM寫讀怎么實(shí)現(xiàn)?
    發(fā)表于 11-25 07:31

    STM32串口有哪些使用方法

    STM32串口有哪些使用方法
    發(fā)表于 12-07 06:29

    stm32f2xx固件庫手冊(cè)詳細(xì)介紹了stm32f2xx的庫函數(shù)及使用方法

    stm32f2xx固件庫手冊(cè)詳細(xì)介紹了stm32f2xx的庫函數(shù)及使用方法
    發(fā)表于 09-21 13:59 ?278次下載
    <b class='flag-5'>stm32</b>f2xx固件庫手冊(cè)詳細(xì)介紹了<b class='flag-5'>stm32</b>f2xx的庫函數(shù)及<b class='flag-5'>使用方法</b>

    如何進(jìn)行STM32系列單片機(jī)內(nèi)部EEPROM的讀寫詳細(xì)資料和程序免費(fèi)下載

    STM32L系列單片機(jī)內(nèi)部提供了EEPROM存儲(chǔ)區(qū)域,但實(shí)質(zhì)上,其FLASH也是EEPROM類型,只不過有一塊區(qū)域被開放出來專門用作EEPROM
    發(fā)表于 08-05 17:34 ?12次下載
    如何進(jìn)行<b class='flag-5'>STM32</b>系列單片機(jī)<b class='flag-5'>內(nèi)部</b><b class='flag-5'>EEPROM</b>的讀寫詳細(xì)資料和程序免費(fèi)下載

    分享EEPROM的作用和使用方法

    此外,該器件還具有顯著的物理保護(hù)功能、加密功能和其他融入設(shè)計(jì)的安全功能;啟用這些功能后,將可以保護(hù)EEPROM數(shù)據(jù)和內(nèi)部寄存器免受最頑固的黑客以外的所有黑客攻擊。數(shù)據(jù)可以通過使用軍用級(jí)AES加密技術(shù)(最多16個(gè)128位密鑰)進(jìn)行保護(hù)。
    的頭像 發(fā)表于 10-31 17:01 ?2.9w次閱讀
    分享<b class='flag-5'>EEPROM</b>的作用和<b class='flag-5'>使用方法</b>

    STM32 ST-LINK Utility介紹、 下載、安裝、使用方法

    STM32 ST-LINK Utility介紹、下載、安裝、使用方法
    的頭像 發(fā)表于 03-24 13:55 ?5.6w次閱讀
    <b class='flag-5'>STM32</b> ST-LINK Utility介紹、 下載、安裝、<b class='flag-5'>使用方法</b>

    淺談STM32CubeMX使用方法及功能介紹

    STM32CubeMX使用方法及功能介紹
    的頭像 發(fā)表于 03-25 11:02 ?1.2w次閱讀
    淺談<b class='flag-5'>STM32</b>CubeMX<b class='flag-5'>使用方法</b>及功能介紹

    STM32L系列讀取單片機(jī)內(nèi)部EEPROM

    &nbsp; &nbsp; STM32L系列單片機(jī)內(nèi)部提供了EEPROM存儲(chǔ)區(qū)域,但實(shí)質(zhì)上,其FLASH也是EEPROM類型,只不過有一塊區(qū)域被開放出來專門用作
    發(fā)表于 11-23 17:21 ?17次下載
    <b class='flag-5'>STM32</b>L系列讀取單片機(jī)<b class='flag-5'>內(nèi)部</b><b class='flag-5'>EEPROM</b>

    STM32F103:內(nèi)部Flash模擬EEPROM

    內(nèi)部Flash模擬EEPROM一、原因由于STM32F103系列的單片機(jī)內(nèi)部Flash的擦寫次數(shù)僅有10k次,如果遇到想要存儲(chǔ)又多變,又需要掉電保存的數(shù)據(jù),就顯得有點(diǎn)捉襟見肘了。我決定
    發(fā)表于 12-02 11:36 ?33次下載
    <b class='flag-5'>STM32</b>F103:<b class='flag-5'>內(nèi)部</b>Flash模擬<b class='flag-5'>EEPROM</b>

    CubeMX的基礎(chǔ)使用方法

    CubeMX的基礎(chǔ)使用方法,可以參看我之前發(fā)的一個(gè)視頻:STM32打印數(shù)據(jù)到串口助手。
    的頭像 發(fā)表于 08-15 10:35 ?4237次閱讀

    AN4957_STM32F413、F423的DFSDM使用方法

    AN4957_STM32F413、F423的DFSDM使用方法
    發(fā)表于 11-21 08:11 ?0次下載
    AN4957_<b class='flag-5'>STM32</b>F413、F423的DFSDM<b class='flag-5'>使用方法</b>

    AN4187 在STM32系列中CRC外設(shè)的使用方法

    AN4187 在STM32系列中CRC外設(shè)的使用方法
    發(fā)表于 11-21 17:07 ?1次下載
    AN4187 在<b class='flag-5'>STM32</b>系列中CRC外設(shè)的<b class='flag-5'>使用方法</b>

    STM32G0開發(fā)筆記:EEPROM M24C02的使用方法

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為EEPROM M24C02的使用方法。
    的頭像 發(fā)表于 01-16 15:19 ?2610次閱讀
    <b class='flag-5'>STM32</b>G0開發(fā)筆記:<b class='flag-5'>EEPROM</b> M24C02的<b class='flag-5'>使用方法</b>