0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32变量能存进flash中吗

科技绿洲 来源:网络整理 作者:网络整理 2023-12-28 15:33 次阅读

当涉及到将变量存储在Flash中时,我们通常指的是将变量存储在STM32微控制器的闪存器件中。在STM32芯片中,闪存用于存储程序代码和只读数据,但对于一些应用情况,我们可以使用闪存来存储可读写的变量。

虽然SRAM是通常用于存储变量的内存区域,但在某些场景中,需要将变量存储在闪存中的原因有以下几点:

  1. 节省SRAM空间:对于资源受限的应用,SRAM可能是有限的,因此在闪存中存储变量可以释放SRAM空间,使其可以用于其他用途。
  2. 数据持久性:将变量存储在闪存中可以确保其数据持久性,即使在断电或重新启动后,变量的值也能保持不变。
  3. 更新性:如果需要更新变量的值,而不需要重新烧录MCU的固件或运行其他复杂的操作,可以通过修改闪存中的数据来实现。

要将变量存储在闪存中,以下是可能的方法:

  1. 使用编译器指令:某些编译器支持特殊的指令,例如__attribute__((section(".flash_var"))),可以将变量存储在特定的闪存区域。具体的指令和语法可能因编译器而异,必须查阅相关编译器的文档以了解更多信息
  2. 自定义存储函数:您可以编写自定义的函数,将变量值写入闪存的特定地址。这需要了解芯片的闪存组织和操作细节,以确保正确的写入过程,并正确处理闪存的擦除和写入操作。
  3. 使用HAL库:ST提供了一个用于与STM32微控制器进行交互的标准库,称为HAL库。HAL库提供了一种使用简单的接口将变量保存到闪存中的方法。具体的函数和示例代码可以在官方提供的HAL库文档中找到。

无论您选择哪种方法,都需要较好地了解STM32的闪存器件的特性和限制。

闪存器件通常被分为多个扇区,每个扇区的大小可能不同。在将变量存储在闪存中时,需要考虑以下因素:

  1. 擦除和写入操作:闪存通常需要在写入之前擦除扇区,因此存储变量时需要进行擦除和写入操作。这可能需要引入性能延迟,并且会消耗相对较长的时间。
  2. 寿命和耐久性:闪存器件的擦写次数是有限的。因此,如果需要频繁地更新存储在闪存中的变量,需要注意确保不会超过芯片制造商指定的最大擦写次数。
  3. 数据保护和完整性:为了确保数据的正确性和完整性,应该使用一些校验机制,例如循环冗余校验码(CRC),来验证变量在闪存中的存储和读取过程。

综上所述,将变量存储在STM32的闪存中是可行的,但这需要了解芯片的设计特征和操作细节。在使用闪存存储变量时,必须并且非常小心,以确保数据的正确性和完整性,并遵守芯片制造商的推荐和规范。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6813

    浏览量

    147672
  • FlaSh
    +关注

    关注

    10

    文章

    1551

    浏览量

    146719
  • STM32
    +关注

    关注

    2240

    文章

    10675

    浏览量

    348872
  • 闪存器
    +关注

    关注

    0

    文章

    6

    浏览量

    1946
收藏 人收藏

    评论

    相关推荐

    【问题汇总】关于STM32flash问题

    1、关于STM32flash问:在keil C 编程,在add flash programming algorithm,所选择的Dev
    发表于 03-14 09:40

    读取STM32内部的flash

    我要保存一个密码,掉电不丢失。我知道把数据flash里面掉电不会丢失,但是要怎么把数据写进flash里面,和怎样从flash里面读取数据
    发表于 07-03 16:54

    stm32flash存放一个变量

    是什么?这时还没有进行写入。这样就会导致变量的值在一开始就错了。如何解决这一问题?有人说,FLASH还没被写入数据时里面的值不是0x00就是0xFF,那么就可以通过判断这个固定地址的值是否为0x00或者0xFF,从而判断是否为
    发表于 08-31 14:57

    请问STM32如何定义变量flash指定位置?

    刚玩stm32,请各位指点一下,我想定义变量flash指定位置。所用编译器,keil.谢谢!
    发表于 03-05 07:35

    请问stm32flash变量怎么定义?

    请问: 怎样将变量定义到flash
    发表于 04-01 04:07

    Flash用来什么

    Flash用来什么?最基本的理解:Flash用来代码,RAM用来数据(如堆,栈,全局变量
    发表于 08-02 06:49

    STM32H743 Flash用来什么

    STM32H743 Flash用来什么?STM32H743 Flash的硬件特性和基本操作是什么?
    发表于 09-24 09:41

    使用stm32时看不到flash的初始化变量值是怎么一回事呢?

    使用stm32时看不到flash的初始化变量值是怎么一回事呢?
    发表于 12-01 07:33

    ulog_easyflash满后去读取日志系统重启咋办

    MCU:stm32f407SPI flash:W25Q128IDE:rt-thread studio软件包:ulog_easyflash+easyflasheasyflash同时开启了ENV环境变量
    发表于 12-30 15:17

    stm32h7xx_hal_flash模块STM32Cube_FW_H7_V1.9.0 pFlash变量问题求解

    stm32h7xx_hal_flash.c 的私有变量FLASH_ProcessTypeDef pFlash ”用于某些函数我注意到它没有被任何函数初始化。因此,例如第一次调用
    发表于 01-06 06:14

    STM32到CONST的全局变量

    图(在 STM32启动文件一文配有此图),可得出,globalConstDat的地址位于Flash memory(0x0800 0000~0x0801 ffff),其它变量的地址位于SRAM。  
    的头像 发表于 07-23 10:50 4460次阅读

    STM32堆和栈及变量的存储理解

    STM32堆和栈及变量的存储理解
    发表于 11-30 16:51 19次下载
    <b class='flag-5'>STM32</b>堆和栈及<b class='flag-5'>变量</b>的存储理解

    STM32STM32 变量存储在片内FLASH的指定位置

    在这里以STM32L4R5为例(官方出的DEMO板),将变量存储在指定的片内FLASH地址(0x081F8000)。一、MDK Keil软件操作uint8_t version[12
    发表于 12-02 11:06 9次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b> <b class='flag-5'>变量</b>存储在片内<b class='flag-5'>FLASH</b>的指定位置

    STM32H743 Flash

    Flash用来存什么?最基本的理解:Flash用来存代码,RAM用来存数据(如堆,栈,全局变量,静态变量)。补充说明:由于Flash的非易失
    发表于 12-07 11:51 8次下载
    <b class='flag-5'>STM32</b>H743 <b class='flag-5'>Flash</b>

    stm32 flash写数据怎么存储的

    stm32 flash写数据怎么存储的  STM32是一款广泛应用于嵌入式系统开发的微控制器,它的Flash存储器是其中一个重要的组成部分。在本文中,我将详细介绍
    的头像 发表于 01-31 15:46 838次阅读