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

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

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

stm32變量能存進flash中嗎

科技綠洲 ? 來源:網(wǎng)絡整理 ? 作者:網(wǎng)絡整理 ? 2023-12-28 15:33 ? 次閱讀

當涉及到將變量存儲在Flash中時,我們通常指的是將變量存儲在STM32微控制器的閃存器件中。在STM32芯片中,閃存用于存儲程序代碼和只讀數(shù)據(jù),但對于一些應用情況,我們可以使用閃存來存儲可讀寫的變量。

雖然SRAM是通常用于存儲變量的內(nèi)存區(qū)域,但在某些場景中,需要將變量存儲在閃存中的原因有以下幾點:

  1. 節(jié)省SRAM空間:對于資源受限的應用,SRAM可能是有限的,因此在閃存中存儲變量可以釋放SRAM空間,使其可以用于其他用途。
  2. 數(shù)據(jù)持久性:將變量存儲在閃存中可以確保其數(shù)據(jù)持久性,即使在斷電或重新啟動后,變量的值也能保持不變。
  3. 更新性:如果需要更新變量的值,而不需要重新燒錄MCU的固件或運行其他復雜的操作,可以通過修改閃存中的數(shù)據(jù)來實現(xiàn)。

要將變量存儲在閃存中,以下是可能的方法:

  1. 使用編譯器指令:某些編譯器支持特殊的指令,例如__attribute__((section(".flash_var"))),可以將變量存儲在特定的閃存區(qū)域。具體的指令和語法可能因編譯器而異,必須查閱相關(guān)編譯器的文檔以了解更多信息。
  2. 自定義存儲函數(shù):您可以編寫自定義的函數(shù),將變量值寫入閃存的特定地址。這需要了解芯片的閃存組織和操作細節(jié),以確保正確的寫入過程,并正確處理閃存的擦除和寫入操作。
  3. 使用HAL庫:ST提供了一個用于與STM32微控制器進行交互的標準庫,稱為HAL庫。HAL庫提供了一種使用簡單的接口將變量保存到閃存中的方法。具體的函數(shù)和示例代碼可以在官方提供的HAL庫文檔中找到。

無論您選擇哪種方法,都需要較好地了解STM32的閃存器件的特性和限制。

閃存器件通常被分為多個扇區(qū),每個扇區(qū)的大小可能不同。在將變量存儲在閃存中時,需要考慮以下因素:

  1. 擦除和寫入操作:閃存通常需要在寫入之前擦除扇區(qū),因此存儲變量時需要進行擦除和寫入操作。這可能需要引入性能延遲,并且會消耗相對較長的時間。
  2. 壽命和耐久性:閃存器件的擦寫次數(shù)是有限的。因此,如果需要頻繁地更新存儲在閃存中的變量,需要注意確保不會超過芯片制造商指定的最大擦寫次數(shù)。
  3. 數(shù)據(jù)保護和完整性:為了確保數(shù)據(jù)的正確性和完整性,應該使用一些校驗機制,例如循環(huán)冗余校驗碼(CRC),來驗證變量在閃存中的存儲和讀取過程。

綜上所述,將變量存儲在STM32的閃存中是可行的,但這需要了解芯片的設計特征和操作細節(jié)。在使用閃存存儲變量時,必須并且非常小心,以確保數(shù)據(jù)的正確性和完整性,并遵守芯片制造商的推薦和規(guī)范。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7394

    瀏覽量

    150629
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1608

    瀏覽量

    147563
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10846

    瀏覽量

    353701
  • 閃存器
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    1953
收藏 人收藏

    評論

    相關(guān)推薦

    讀取STM32內(nèi)部的flash

    我要保存一個密碼,掉電不丟失。我知道把數(shù)據(jù)flash里面掉電不會丟失,但是要怎么把數(shù)據(jù)寫進flash里面,和怎樣從flash里面讀取數(shù)據(jù)
    發(fā)表于 07-03 16:54

    stm32flash存放一個變量

    是什么?這時還沒有進行寫入。這樣就會導致變量的值在一開始就錯了。如何解決這一問題?有人說,FLASH還沒被寫入數(shù)據(jù)時里面的值不是0x00就是0xFF,那么就可以通過判斷這個固定地址的值是否為0x00或者0xFF,從而判斷是否為
    發(fā)表于 08-31 14:57

    Flash用來什么

    Flash用來什么?最基本的理解:Flash用來代碼,RAM用來數(shù)據(jù)(如堆,棧,全局變量
    發(fā)表于 08-02 06:49

    STM32H743 Flash用來什么

    STM32H743 Flash用來什么?STM32H743 Flash的硬件特性和基本操作是什么?
    發(fā)表于 09-24 09:41

    ulog_easyflash滿后去讀取日志系統(tǒng)重啟咋辦

    MCU:stm32f407SPI flash:W25Q128IDE:rt-thread studio軟件包:ulog_easyflash+easyflasheasyflash同時開啟了ENV環(huán)境變量
    發(fā)表于 12-30 15:17

    STM32Flash運行程序的時序分析

    插入等待周期以得到正確的結(jié)果。 問題是在Flash的速度比CPU慢的情況下,是不是可以簡單地說STM32在執(zhí)行Flash的程序時每條指令都需要插入等待周期呢?等待周期的插入對程序的執(zhí)
    發(fā)表于 12-04 15:02 ?1566次閱讀

    剖析STM32FLASH和SRAM的使用情況

    01前言 STM32片上自帶FLASH和SRAM,簡單講FLASH用來存儲程序的,SRAM是用來存儲運行程序的中間變量。本文詳細分析下如何
    的頭像 發(fā)表于 04-09 17:53 ?7806次閱讀
    剖析<b class='flag-5'>STM32</b>的<b class='flag-5'>FLASH</b>和SRAM的使用情況

    STM32到CONST的全局變量

    STM32啟動文件一文配有此圖),可得出,globalConstDat的地址位于Flash memory(0x0800 0000~0x0801 ffff),其它變量的地址位于SRAM。 ?
    的頭像 發(fā)表于 07-23 10:50 ?4745次閱讀

    STM32學習筆記:讀寫內(nèi)部Flash(介紹+附代碼)

    地址是0x2000 0000,結(jié)束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。Flash的內(nèi)容一般用來存儲代碼和一些定義為const的數(shù)據(jù),斷電不丟失,RAM可以理解為內(nèi)存,用來存儲代碼運行時的數(shù)據(jù),變量
    發(fā)表于 11-23 17:51 ?3次下載
    <b class='flag-5'>STM32</b>學習筆記:讀寫內(nèi)部<b class='flag-5'>Flash</b>(介紹+附代碼)

    STM32內(nèi)部Flash讀寫問題

    讀寫要注意幾點keil的.map文件包含了什么操作不當導致Flash損壞會怎樣Flash上鎖與解鎖Keil編譯器如何查看MCU寄存器的值Flash讀、寫、擦除、擦除寫代碼下一篇:
    發(fā)表于 12-01 20:21 ?20次下載
    <b class='flag-5'>STM32</b>內(nèi)部<b class='flag-5'>Flash</b>讀寫問題

    STM32F103:內(nèi)部Flash的讀寫

    一、Flash基本知識1. Flash容量Flash根據(jù)容量大小可以分為以下三種:1、小容量產(chǎn)品:Flash大小為1-32KB(STM32F
    發(fā)表于 12-01 20:51 ?15次下載
    <b class='flag-5'>STM32</b>F103:內(nèi)部<b class='flag-5'>Flash</b>的讀寫

    Keilstm32程序運行占用flash大小

    stm32程序運行占用flash大小Keil編譯后如下圖code儲存程序代碼RO-data儲存const常量和指令RW-data儲存初始化不為0的全局變量ZI-data儲存未初始化的全局變量
    發(fā)表于 12-02 10:36 ?10次下載
    Keil<b class='flag-5'>中</b><b class='flag-5'>stm32</b>程序運行占用<b class='flag-5'>flash</b>大小

    STM32STM32 變量存儲在片內(nèi)FLASH的指定位置

    在這里以STM32L4R5為例(官方出的DEMO板),將變量存儲在指定的片內(nèi)FLASH地址(0x081F8000)。一、MDK Keil軟件操作uint8_t version[12
    發(fā)表于 12-02 11:06 ?9次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b> <b class='flag-5'>變量</b>存儲在片內(nèi)<b class='flag-5'>FLASH</b>的指定位置

    STM32H743 Flash

    Flash用來什么?最基本的理解:Flash用來代碼,RAM用來數(shù)據(jù)(如堆,棧,全局變量,
    發(fā)表于 12-07 11:51 ?8次下載
    <b class='flag-5'>STM32</b>H743 <b class='flag-5'>Flash</b>

    STM32F4外設配置速查【FLASH部分】

    、SPI等)下載程序或應用數(shù)據(jù)到存儲器STM32允許用戶在應用程序燒錄FLASH的內(nèi)容局限性:使用前需要有bootloader被以IC
    發(fā)表于 12-09 10:21 ?1次下載
    <b class='flag-5'>STM32</b>F4外設配置速查【<b class='flag-5'>FLASH</b>部分】