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

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

3天内不再提示

stm32 flash写数据怎么存储的

工程师邓生 来源:未知 作者:刘芹 2024-01-31 15:46 次阅读

stm32 flash写数据怎么存储的

STM32是一款广泛应用于嵌入式系统开发的微控制器,它的Flash存储器是其中一个重要的组成部分。在本文中,我将详细介绍STM32 Flash的存储机制,包括其结构、特点以及如何写入数据。

一、STM32 Flash的结构

STM32 Flash存储器通常被分为多个扇区,每个扇区大小为2KB到256KB不等,根据不同的型号有所不同。每个扇区可以独立进行擦除和写入操作,这使得STM32 Flash存储器非常灵活和易于使用。

Flash存储器的每个单元通常被称为“页”,一个页大小通常为1KB到2KB。这些页可以独立进行写入操作,并且无需进行整个扇区的擦除。这个特性使得STM32 Flash在实时数据存储和更新方面更加高效。

二、STM32 Flash的特点

1.快速擦除和编程速度:STM32 Flash具有快速的擦除和编程速度,可以高效地进行数据存储和更新操作。

2.耐久性和可靠性:STM32 Flash的存储器具有良好的耐久性和可靠性,可以进行大量的擦除和编程操作,而不会影响存储器的寿命。

3.可擦除性:STM32 Flash存储器可以进行扇区或页级别的擦除操作,而无需将整个存储器擦除。这使得数据更新更加方便和高效。

4.数据保护:STM32 Flash存储器提供了可靠的数据保护机制,包括写保护和读保护功能,以确保数据的安全性和完整性。

三、STM32 Flash的写入操作

STM32 Flash的写入操作需要使用特定的函数来实现。以下是一些常用的写入函数:

1.写入单个字节:使用HAL库中的函数HAL_FLASH_Program()可以将单个字节写入到Flash存储器中。例如,要将值0xAA写入地址0x08008000的Flash存储器中,可以使用以下代码:

```c
HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, 0x08008000, 0xAA);
```

2.写入半字(16位):使用HAL_FLASH_Program()函数可以将半字(16位)数据写入Flash存储器中。例如,要将值0x55AA写入地址0x08008000的Flash存储器中,可以使用以下代码:

```c
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, 0x08008000, 0x55AA);
```

3.写入字(32位):使用HAL_FLASH_Program()函数可以将字(32位)数据写入Flash存储器中。例如,要将值0x11223344写入地址0x08008000的Flash存储器中,可以使用以下代码:

```c
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x08008000, 0x11223344);
```

4.扇区擦除:使用HAL_FLASH_Erase_Sector()函数可以擦除Flash存储器的指定扇区。例如,要擦除地址范围为0x08008000到0x08008FFF的Flash存储器,可以使用以下代码:

```c
FLASH_EraseInitTypeDef erase;
erase.TypeErase = TYPEERASE_SECTORS;
erase.Banks = FLASH_BANK_1;
erase.Sector = FLASH_SECTOR_7;
erase.NbSectors = 1;
erase.VoltageRange = VOLTAGE_RANGE_3;
uint32_t PageError = 0;
HAL_FLASHEx_Erase(&erase, &PageError);
```

通过这些函数,我们可以实现对STM32 Flash存储器的写入操作,从而实现数据的存储和更新。

综上所述,STM32 Flash存储器是一种高效、灵活且可靠的数据存储解决方案。在嵌入式系统开发中,通过了解其结构和特点,并使用相应的写入函数,可以轻松地实现对Flash存储器的数据存储和更新操作。

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

    关注

    10

    文章

    1550

    浏览量

    146646
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128219
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348743
收藏 人收藏

    评论

    相关推荐

    stm32f4 FLASH_ProgramDoubleWord函数数据不能写入flash的原因?

    STM32F401芯片,调用flash函数时,如果一个字,也就是调用stm32f4 FLASH
    发表于 04-12 06:50

    STM32F030 FLASH存储,第二次或者多次写入或者擦除的时候读取不到数据是为什么?

    最新在用STM32F030 因为没有外部存储设备,现在用的是芯片的FLASH来当存储,现在遇到的问题是刷一次程序后,第一次读取可以读取到,当第二次或者多次写入或者擦除的时候读取不到
    发表于 04-10 07:34

    Flash存储芯片:NOR Flash、NAND Flash、UFS和eMMC的比较与解析

    前言 在数字化时代的今天,数据存储和管理变得越来越重要。各种各样的存储技术应运而生,以满足不同的使用场景和需求。其中,Flash存储芯片以
    的头像 发表于 04-03 12:02 255次阅读
    <b class='flag-5'>Flash</b><b class='flag-5'>存储</b>芯片:NOR <b class='flag-5'>Flash</b>、NAND <b class='flag-5'>Flash</b>、UFS和eMMC的比较与解析

    STM32L476先用仿真器擦除FLASH后在程序中不成功怎么解决?

    STM32L476FLASH必须是64位(8字节),也就是double WORD,而且要先把要写的字节部分擦除掉。 问题来了,先把整片用仿真器擦除掉,程序中先定义一个64位的静态
    发表于 03-28 08:44

    CCG5 platform Flash在烧images时,如何保留产线校准数据

    和板卡信息丢失 2. PSoC Programmermer没法擦除指定flash,都是整个128K擦除,例如在flash中分配一个row来存储产线校准数据,如何保证在烧
    发表于 02-27 06:02

    stm32f103 flash模拟eeprom

    STM32F103的Flash存储器可以模拟EEPROM的功能,在本文中我们将详细介绍如何使用STM32F103的Flash
    的头像 发表于 01-09 11:21 681次阅读

    stm32变量能存进flash中吗

    当涉及到将变量存储Flash中时,我们通常指的是将变量存储STM32微控制器的闪存器件中。在STM32芯片中,闪存用于
    的头像 发表于 12-28 15:33 821次阅读

    fpga配置flash怎么用来存储数据

    要求使用其他存储设备,如Flash存储器,来存储数据Flash
    的头像 发表于 12-15 15:42 762次阅读

    ARM STM32中的程序是在RAM里还是在FLASH里运行?

    STM32有两个存储空间,一个是片上的FLASH,一个是片上的RAM。RAM相当于内存,FLASH相当于硬盘。
    的头像 发表于 10-27 14:06 1902次阅读
    ARM <b class='flag-5'>STM32</b>中的程序是在RAM里还是在<b class='flag-5'>FLASH</b>里运行?

    如何使用Flash模拟EEPROM存储参数?

    在MCU的使用中,经常遇到需要存储参数或掉电保持数据等功能。其中,Flash和EEPROM是常见的非易失性存储
    的头像 发表于 09-21 09:14 897次阅读

    通过STM32CubeMX制作外部Flash的烧驱动

    目前,越来越多的应用需要扩展外部的 Flash 来满足存储需求。那么,在调试及批量生产的过程中,需要对外扩的 Flash 进行 烧录操作。由于 STM32 ST-LINK Utilit
    发表于 09-07 07:22

    STM32H750内部flash读写要如何保存数据

    请教下,STM32H750XBHx我看资料内置flash为128K,并且flash擦除的最小单元也是128K。这样的话我有数据要保存应该怎样处理好呢?
    发表于 08-05 07:37

    STM32CUBEMX开发GD32F303(17)----内部Flash读写

    断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是STM32F103ZET6进行移植,512K大小的Flash
    的头像 发表于 07-27 09:35 1175次阅读
    <b class='flag-5'>STM32</b>CUBEMX开发GD32F303(17)----内部<b class='flag-5'>Flash</b>读写

    STM32CUBEIDE(16)----内部Flash读写

    本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是STM
    的头像 发表于 07-27 09:24 972次阅读
    <b class='flag-5'>STM32</b>CUBEIDE(16)----内部<b class='flag-5'>Flash</b>读写

    单板硬件设计:存储器( NAND FLASH)

    停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 1.1 存储器ROM介绍 rom最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了
    发表于 05-19 15:59