首页 > 其他分享 >STM32标准库实现Flash存储和读取

STM32标准库实现Flash存储和读取

时间:2023-08-10 14:13:54浏览次数:31  
标签:status Flash FLASH 读取 flash STM32 address uint32

 

在STM32F103C8T6微控制器上使用标准库实现Flash存储和读取数据可以通过以下步骤完成:

  1. 首先,确保你已经配置好了STM32F103C8T6的Flash存储器。默认情况下,Flash存储器已经被分成了两个扇区,一个用于存放程序代码(Main Flash Memory),另一个用于存放数据(Data EEPROM)。

  2. 在代码中包含stm32f10x_flash.h头文件,该头文件包含了Flash存储器的相关函数和宏定义。

  3. 初始化Flash存储器。你可以使用FLASH_Unlock()函数来解锁Flash存储器,并且使用FLASH_ClearFlag()函数来清除相关的标志位。

#define FLASH_ADDRESS_VOLTAGE 0x08003000  // 电压起始地址
#define FLASH_ADDRESS_CURRENT 0x08004000  // 电流起始地址

 

// 写入数据
void Write_Flash(uint16_t data, u32 flash_address)
{
    FLASH_Status status = FLASH_COMPLETE;
    
    FLASH_Unlock();                       // 解锁Flash写入操作
    FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);      // 清除Flash中断标志位
    
    status = FLASH_ErasePage((uint32_t)flash_address);

  while (status == FLASH_COMPLETE)
  {
    status = FLASH_ProgramWord(flash_address, data);
  }

  FLASH_Lock();
}

 

// 读取数据
uint32_t read_data_from_flash(uint32_t address) 
{
    return *(volatile uint32_t*)address;    // 读取Flash中指定地址的数据
}

 

标签:status,Flash,FLASH,读取,flash,STM32,address,uint32
From: https://www.cnblogs.com/Bingley-Z/p/17620170.html

相关文章

  • XQ138AS/6748AS-EVM开发板CPU、FLASH、RAM资源
    XQ138AS/6748AS-EVM是广州星嵌基于SOM-XQ138F/6748F核心板开发的一款开发板。因SOM-XQ138F/6748F核心板管脚兼容,所以共用同一个底板。开发板采用核心板+底板的设计方式,尺寸为230mm*142mm,可帮助开发者快速评估核心板的性能。 核心板为工业级,采用高密度8层板沉金无铅设计工艺,尺......
  • 读取sqlite库的wkt类型数据(unbantu中安装spatialite插件)
    一,问题:现在要从sqlite读取wkt类型的数据,写入postgis库中wkt在sqlite中的格式为:  python直接读取的格式是:b'\x00\x01\xef\x7f\x00\x00\xf9\xff\xff\xf3\xc8\xfe*\x' pg库可以直接存的类型是wkt格式: LINESTRINGZ(40.612829447.729325-1.566514,43.813899......
  • Modbus通信协议实践(1)-通过modbusRTU实现TPC7022kt对电流表数据的读取
    需求:1.昆仑通泰TPC7022kt触摸屏2.安装了MCGSpro的PC一台3.能使用RS485通讯协议的数显直流电流表一个 操作步骤:1.以常规1mm电线和双绞线连接电流表和昆仑通泰触摸屏,网线连接触摸屏和pc。2.根据数显直流表的说明书,设置该表的通讯地址为01,波特率为9600,N81无校验位,8个数据位,1......
  • stm32 f103c8 clion 引入标砖库 CMakeLists.txt
    使用ClionIDE开发stm32使用标准库可以使用qemu代替开发版使用CMakeLists.txt编译项目set(CMAKE_SYSTEM_NAMEGeneric)set(CMAKE_SYSTEM_VERSION1)cmake_minimum_required(VERSION3.26)set(CMAKE_C_COMPILERarm-none-eabi-gcc)set(CMAKE_CXX_COMPILERarm-no......
  • NETCORE - 读取 appsettings.json 配置数据
    NETCORE-读取appsettings.json配置数据 环境:net6 webapi 1. 配置appsettings.json数据{"Logging":{"LogLevel":{"Default":"Information","Microsoft.AspNetCore":"Warn......
  • 基于CUBEMX的STM32F4 Hal库,配置LVGL(无操作系统版)
    本篇文章移植思路适用于所有嵌入式MCU,包括Arm,STM32,NXP,乐鑫,Nuvoton,Arduino,RT-Thread,Zephyr,NuttX,Adafruit等等。为什么要写这一篇移植教程?也许你会说各种开源论坛上面上,已经有很多移植教程了,为什么还要再重新写一篇?因为很简单我按照前辈们的思路和移植步骤,到最后没有一个成功的,这......
  • 一文搞明白STM32芯片存储结构
    一、前言        本篇介绍STM32芯片的存储结构,ARM公司负责提供设计内核,而其他外设则为芯片商设计并使用,ARM收取其专利费用而不参与其他经济活动,半导体芯片厂商拿到内核授权后,根据产品需求,添加各类组件,生产芯片售卖。图1为STM32的组成示意图,其中Cortex-M3内核、调试系统都......
  • python实现创建一个银行类,这个类实现了两个方法,第一个方法可以将用户信息写入到文件中
    classbank:defuser_info(self):a=input('请输入用户信息:')#不写encoding='utf-8'中文会乱码withopen('info.txt','w',encoding='utf-8')asf:f.write(a)defget_info(se......
  • golang自定义 os.stderr 数据读取逻辑
    原始需求只是一个很简单的需求,使用golang的exec运行一个命令然后获取实时结果,命令是trivyimage--download-db-only正常的打印应该是2023-08-08T17:06:02.929+0800INFONeedtoupdateDB2023-08-08T17:06:02.929+0800INFODBRepository:ghcr.io/aquas......
  • H7-TOOL的高速DAPLINK用于新版STM32CubeIDE V1.13及其以上版本的超简单实现方法(2023-0
    之前分享了一个方法,太繁琐了,H7-TOOL群的群友提供了一个方法,实现非常简单。1、使用STM32CubeMX或者自己创建一个STM32CubeIDE工程后,设置这两个地方即可: 配置调试器,设置完毕记得点击右下角的Apply2、然后修改这个cfg文件,F407IGTDebug.cfg,注意和第1步cfg是一个文件。修改......