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

    文章

    1633

    浏览量

    147955
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3587

    浏览量

    129440
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355773
收藏 人收藏

    评论

    相关推荐

    programmer烧用户数据flash-v1

    今天有客户提出怎样把用户数据写入到flash的操作,本来以为的programmer都不支持了,但是经过多次验证发现还是可以的,可能之前的验证哪里有点问题吧。 一、通过SPI Active或者SPI
    的头像 发表于 11-28 15:13 802次阅读
    programmer烧<b class='flag-5'>写</b>用户<b class='flag-5'>数据</b>到<b class='flag-5'>flash</b>-v1

    NAND Flash与其他类型存储器的区别

    NAND Flash作为一种基于NAND威廉希尔官方网站 的非易失性存储器,具有多个显著优点,这些优点使其在数据存储领域得到了广泛应用。以下是对NAND Flas
    的头像 发表于 08-20 10:24 734次阅读

    加速科技Flash存储测试解决方案 全面保障数据存储可靠性

    Flash存储芯片  现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性
    的头像 发表于 06-26 18:25 933次阅读
    加速科技<b class='flag-5'>Flash</b><b class='flag-5'>存储</b>测试解决方案 全面保障<b class='flag-5'>数据</b><b class='flag-5'>存储</b>可靠性

    STM32G0B1CBT6双Bank升级,程序运行在Bank2时,就不能正确的flash配置数据了,为什么?

    我把Flash的最后一部分区域用来存储配置数据, 双Bank升级操作,在程序运行在bank1时, 读写对应flash区域的配置数据都正常,
    发表于 05-27 06:44

    STM32写入Flash不正常的原因?

    我参考原子的战舰开发板 使用实验34 FLASH模拟EEPROM实验的Flash操作函数 STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16
    发表于 05-14 08:22

    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:05

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

    前言 在数字化时代的今天,数据存储和管理变得越来越重要。各种各样的存储威廉希尔官方网站 应运而生,以满足不同的使用场景和需求。其中,Flash存储芯片以
    的头像 发表于 04-03 12:02 4360次阅读
    <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

    CW32L052 FLASH存储

    CW32L052内部集成了64KB嵌入式FLASH供用户使用,可用来存储应用程序和用户数据。芯片支持对 FLASH 存储器的读、擦除和
    的头像 发表于 02-28 17:43 727次阅读
    CW32L052 <b class='flag-5'>FLASH</b><b class='flag-5'>存储</b>器

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

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

    浅谈flash存储器的特点和优缺点

    Flash存储器的操作具有特殊性,它只能将数据位从1写成0,而不能从0写成1。因此,在对存储器进行写入操作之前,必须先执行擦除操作,将预写
    的头像 发表于 02-19 11:37 3463次阅读
    浅谈<b class='flag-5'>flash</b><b class='flag-5'>存储</b>器的特点和优缺点

    stm32f103 flash模拟eeprom

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

    stm32变量能存进flash中吗

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