⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 基于STM32的双极性逆变器软件
💻 C
字号:
#include "stm32f10x_lib.h"
//#include "stm32f10x_1602.h"
#include "Flash.h"

/* Private define ------------------------------------------------------------*/
#define FLASH_PAGE_SIZE   ((u16)0x100)
/* Private typedef -----------------------------------------------------------*/
typedef enum {FAILED = 0, PASSED = !FAILED} TestStatus;

/* Private variables ---------------------------------------------------------*/
u32 EraseCounter = 0x00, Address = 0x00;
vu32 NbrOfPage = 0x00;
volatile FLASH_Status FLASHStatus;
volatile TestStatus MemoryProgramStatus;
/*****************************写Flash函数****************************************
*
* 变量值为带写入的数,起始地址,截止地址
*
*********************************************************************************/
char Flash(u32 x,u32 y,u32 z){
  FLASHStatus = FLASH_COMPLETE;
  MemoryProgramStatus = PASSED;

  /* Unlock the Flash Program Erase controller */
  FLASH_Unlock();
  
  /* Define the number of page to be erased */
  NbrOfPage = (z - y) / 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(y + (FLASH_PAGE_SIZE * EraseCounter));
  }
  
  /*  FLASH Word program of data 0x15041979 at addresses defined by StartAddr and EndAddr*/
  Address = y;

  while((Address < z) && (FLASHStatus == FLASH_COMPLETE))
  {
    FLASHStatus = FLASH_ProgramWord(Address, x);
    Address = Address + 4;
  }
  
  /* Check the corectness of written data */
  Address = y;

  while((Address < z) && (MemoryProgramStatus != FAILED))
  {
    if((*(vu32*) Address) != x)
    {
      MemoryProgramStatus = FAILED;
    }
    Address += 4;
  }

  if(MemoryProgramStatus == FAILED)
  {
  return(0);
  }
  else
  {
  return(1);
  }
}
/*****************************读Flash函数****************************************
*
* 变量值为带读出的数,起始地址,截止地址
*
*********************************************************************************/

u32 Flash_Read(u32 y){
u32 x;
x=(*(vu32*) y );
return(x);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -