STM32 Flash 擦除 读写 成功

发布者:SereneNature最新更新时间:2018-08-19 来源: eefocus关键字:STM32  Flash  擦除  读写 手机看文章 扫描二维码
随时随地手机看文章

参考:http://download.csdn.net/detail/my_friend_ship/4166970


要点: 将数据写入flash之前,每次都要擦除,否则会写入不成功,出现的错误状态为:FLASH_Status=FLASH_ERROR_PG

写入数据成功后可以在Memory 中查看刚刚写入的数据,具体在Memory 窗口中输入:0x08010000,既可以看到此处的数据为 :Data = 0x15041979;//要写入的地址


擦除的起始地址与终止地址

#define StartAddr  ((u32)0x08010000)
#define EndAddr    ((u32)0x0807ffff)


//擦除

char IAP_Init()//初始化loaded 的flash

{
  FLASHStatus = FLASH_COMPLETE;
  //MemoryProgramStatus = PASSED;
  
  /* Unlock the Flash Program Erase controller */
  FLASH_Unlock();


  /* Define the number of page to be erased */
  NbrOfPage = (EndAddr - StartAddr) / FLASH_PAGE_SIZE;


  /* Clear All pending flags */
  FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); 


  /* Erase the FLASH pages */
  for(EraseCounter = 0; (EraseCounter < NbrOfPage) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
  {
    FLASHStatus = FLASH_ErasePage(StartAddr + (FLASH_PAGE_SIZE * EraseCounter));
  }
 return  FLASHStatus;

}


int main(void)

  u8 t;
  u8 key;
  u16 oldcount=0; //老的串口接收数据值
  u16 applenth=0; //接收到的app代码长度
  u8 clearflag=0;
  u32 FlashDestination;
  FLASH_Unlock();
  RCC_Configuration(); 
  GPIO_Configuration();
  NVIC_Configuration();
  SysTick_Config();
  UART_init(9600);//串口初始化为9600  5648
  IAP_Init();

  Data = 0x15041979;//要写入的地址
  u32    Address;

while(1)//循环擦除写入


  {  
  IAP_Init();
 int j,x;
  u32 RamSource; 
  FLASHStatus = FLASH_COMPLETE;
    /* Program the data received into STM32F10x Flash */
      FLASHStatus=FLASH_ProgramWord(StartAddr, Data);
     if( FLASHStatus == FLASH_COMPLETE )
     {
      Address = StartAddr;
      if (*(u32*)Address != Data ) 
      {
      /* End session */
        RFID_SendString("IAP  XXXXX !"); //写入失败
      }
      else       
       RFID_SendString("IAP   WRITE !");//写入成功
    }

}


关键字:STM32  Flash  擦除  读写 引用地址:STM32 Flash 擦除 读写 成功

上一篇:STM32 SPI+DMA (HAL库)使用方法
下一篇:STM32 HAL 库学习笔记之-------(系统时钟配置)

推荐阅读最新更新时间:2024-03-16 16:11

基于闪烁存储器的DSP并行引导装载方法
TMS320VC5409 是TI公司推出的第一代的高性能、低价位、低功耗数字信号处理器(DSP)。与现在流行的TMS320C5409相比,性能提高了60%,功耗效率提高了 50%。它的应用对象大多是要求能脱机运行的内嵌式系统,如机顶盒(STB)、个人数字助理(PDA)和数字无线通信等。闪烁存储器(FLASH MEMORY)是可以在线电擦写、掉电后信息不丢失的存储器。FLASH与EPROM相比,具有更高的性能价格比,而且体积小、功耗低、擦写速度快、使用比较方便。因此,采用FLASH存储程序和固定数据是一种比较好的选择。AMD公司的Am29LV400B FLASH可以直接与DSP相接。 1 Am29LV400B的主要特点及编程方
[嵌入式]
STM32 CAN 通讯 标示符过滤器设置
简介:最近看了下STM32 CAN 通讯其中标示符过滤器设置大有讲究。特别是你要使用ST库函数时,当过滤器工作在屏蔽模式下,并且你把屏蔽位设了1也就是标示符对应位必须全部匹配才能通过,这是由其要小心。 举个例子吧,过滤器长度为32位,模式为屏蔽模式,假如我要发送的标示符为0x1314;那过滤器设置如下 一、过滤器完全无效 接收到的标示符全部通过 0x1314 二进制码: 0000 0000 0000 0000 0001 0011 0001 0100 CAN_Filter xxxx xxxx xxxxxxxx xxxx xxxx xxxx xxxx CAN_FilterMask 0000 0000 0000 00
[单片机]
STM32-一文读懂EXTI外部中断/事件系统
STM32的外部中断/事件系统简介 注意这里的外部中断指的是EXTI,是芯片的外部中断,主要是由芯片外部事件触发的中断,不是内核的外部中断!在《STM32-异常与中断》中提到的外部中断均是相对于内核而言的,比如串口中断、定时器中断等等都是(内核的)外部中断。 大部分的STM32外部中断/事件控制器由19个产生事件/中断请求的边沿检测器组成,支持 19 个外部中断/事件请求,这19 个外部分别中断为: (互联型 )产品有20个) 线 0~15:对应外部 IO 口的输入中断。 线 16:连接到 PVD 输出。 线 17:连接到 RTC 闹钟事件。 线 18:连接到 USB 唤醒事件。 每个中断设有状态位,每个中断/事件都有独
[单片机]
STM32-一文读懂EXTI外部中断/事件系统
STM32与SD卡通信分层思考
  最近做了一些 STM32 和SD卡通信的一些思考,一直以来SD的驱动和应用困扰了我很久,寒假的时候看到SD简化版物理层协议的时候就傻掉了,看到SD的驱动快3000行的代码也动摇了。这几天几种地看了一下SD卡的相关内容,总结了一些体会,感觉也没有那么恐怖了。我决定从分层上来讨论SD的驱动和应用,因为这样可以构建一个清晰的逻辑,且不知哪位计算机大师曾说过:一切计算机问题都可以用分层的方法来解决。   我自己把SD卡从驱动到应用共分为4层,从下至上依次为:驱动层、物理层、文件系统层、应用层。下面一一来介绍各层的一些重要的操作。   1)驱动层   驱动层,对应到ST的库,就是stm32f10x_sdio.c/.h这个两文件。其实使用任
[单片机]
STM32高级开发(14)-使用CubeMX生成STM32工程
在我们了解libopencm3的使用后,发现libopencm3只适用于小型工程,其最大的特色只是在USB方面的使用方便,那么在我们配置大型工程的时候有没有一种更快捷的方式呢,显然是有的。它就是CubeMX,ST官方出的神器,可以使得我们像配置FPGA一样配置STM32的功能。CubeMX早期是运行在windows下的,但由于是Java写成的它也可以同样的运行在Linux环境中。 安装JAVA环境 在Ubuntu中可以使用的java环境有很多我们这里使用软件中心的默认安装。 $ sudo apt-get install default-jre 安装完毕后可使用指令查看java版本验证安装成功 $ java -version
[单片机]
STM32CUBEMX(10)--Flash读写
概述 本例程主要讲解如何对芯片自带Flash进行读写,用芯片内部Flash可以对一些需要断电保存的数据进行保存,无需加外部得存储芯片,本例程采用的是STM32F030R8T6,64K大小的Flash。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 选择芯片型号 使用STM32CUBEMX选择芯片stm32f030r8,如下所示: 配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示: 配置时钟树 STM32F0的最高主频到48M,所以配置48即可: 串口配置 本次实验使用的串口1进行串口通信,波特率配置为1
[单片机]
STM32CUBEMX(10)--<font color='red'>Flash</font><font color='red'>读写</font>
意法半导体Open.MEMS授权计划可加快新产品开发并缩短研发周期
免费授权单节点开发软件,只需简单的五个步骤即可在五分钟内启动设计项目。 中国,2014年12月5日 —— 横跨多重电子应用领域、全球领先的半导体供应商、世界第一大MEMS产品制造商、世界最大的消费电子及移动应用MEMS产品供应商 及汽车应用MEMS产品供应商 意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布了其Open.MEMS授权计划。通过提供快速简易的单节点 (single-node) 应用评估授权,该开发计划将加快新产品开发并缩短研发周期。 为了向所有用户和开放式开发社区推广MEMS传感器的应用,该计划将准许Open.MEMS授权用户免费使用驱动程序、中间件和应用软
[半导体设计/制造]
一文了解STM32启动过程
1 概述 说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。 STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。 本文以一个实际测试代码--START_TEST为例进行阐述。 整体过程 STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例): ①上电后硬件设置SP、PC ②设置系统时钟 ③软件设置SP ④加载.data、.
[单片机]
一文了解<font color='red'>STM32</font>启动过程
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved