typedef enum {FAILED = 0, PASSED = !FAILED} Status;//定义要使用的状态枚举变量
#define FLASH_Page_Size ((uint32_t) 0x00000400) //FLASH页的大小 不够页面大不要去除,否则除不了
#define FLASH_Start_Addr ((uint32_t) 0x08007000) //要编写的起始地址
#define FLASH_End_Addr ((uint32_t) 0x08007003) //要编写的结束地址
uint32_t EraseCounter = 0x00;
uint32_t AddressX = 0x00;
u32 Data_Read ;
uint32_t First_Page = 0x00; //起始页
__IO FLASH_Status FLASHStatus = FLASH_COMPLETE;
__IO Status MemoryProgramStatus = PASSED;
void FLASH_Erase(void)//擦除程序必须变成ff才可以
{
//printf("\r\n擦除变为0xff\r\n");
FLASH_Unlock();//先解锁
FLASH_ClearFlag( FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR); //清除相应的标志位
First_Page = (FLASH_End_Addr - FLASH_Start_Addr) ;//计算出起始页
//printf("【FLASH初始页面】【%d】\r\n",First_Page);
/* 使用前先擦除 */
for(EraseCounter = 0; (EraseCounter < First_Page) && (FLASHStatus == FLASH_COMPLETE); EraseCounter++)
{
if (FLASH_ErasePage(FLASH_Sta
STM32F0X单片机的内部FLASH问题
最新推荐文章于 2024-05-16 03:06:11 发布