📄 flash.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 + -