volatile FLASH_Status FLASHStatus; u8 k=0; u32 Address; Address = WriteFlashAddress; FLASHStatus = FLASH_COMPLETE; FLASH_Unlock();//解锁 FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清除所有标志 FLASHStatus = FLASH_ErasePage(WriteFlashAddre...
71 FlashStatus = FLASH_ErasePage(OldPageAddress); 72 /* If erase operation was failed, a Flash error code is returned */ 73 if (FlashStatus != FLASH_COMPLETE) 74 { 75 return FlashStatus; 76 } 77 78 /* Set new Page status to VALID_PAGE status */ 79 FlashStatus = FLASH_ProgramHal...
Flash_Erase_Page(EEPROM_START_ADDRESS);} // 写入新数据 Flash_Write_Word(EEPROM_START_ADDRESS + ...
FLASHstatus=FLASH_ErasePage(addr);//擦除指定地址页 FLASHstatus=FLASH_ProgramHalfWord(addr, flashdata1);//从指定页的addr地址开始写 //FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR); FLASH_Lock();//锁定FLASH编程擦除控制 } 基本顺序:解锁-》清除标志位(可...
uint32_t PageError = 0;//调用擦除函数 HAL_FLASHEx_Erase(&f, &PageError);//3、对FLASH烧写...
{// 需要擦除if(STM32_FLASH_BUF[secoff + i] !=0XFFFF) {break; } }// 需要擦除if(i < secremain) {FLASH_ErasePage(secpos * STM32_SECTOR_SIZE + STM32_FLASH_BASE);// 擦除这个扇区// 复制for(i =0;i < secremain;i ++)
uint32_t EraseCounter = 0x00, Address = 0x00;//擦除计数,写入地址 uint32_t Data = 0x3210ABCD;//要写入的数据 uint32_t NbrOfPage = 0x00;//记录要擦除的页数 volatile FLASH_Status FLASHStatus = FLASH_COMPLETE;/*FLASH擦除完成标志*/ ...
锁定函数:void FLASH_Lock(void); 有解锁当然就有上锁,为了保护Flash,读写和擦除全部需要的Flash后需要上锁,只需要调用: FLASH_Lock(); 擦除函数 固件库我们主要使用两个 FLASH 擦除函数: FLASH_Status FLASH_ErasePage(uint32_t Page_Address); FLASH_Status FLASH_EraseAllPages(void); 顾名思义,第一个函...
* FLASH_ERROR_WRP, FLASH_COMPLETE or FLASH_TIMEOUT. */ FLASH_Status FLASH_ErasePage(uint32_t Page_Address) { FLASH_Status status = FLASH_COMPLETE; /* 等待上一次操作完成 */ status = FLASH_WaitForLastOperation(EraseTimeout); if(status == FLASH_COMPLETE) ...
FLASH_Status FLASH_ErasePage(uint32_t Page_Address); FLASH_Status FLASH_EraseAllPages(void); FLASH_Status FLASH_EraseOptionBytes(void); 2.1.3、接下来是写/读数据函数,该函数也是官方给出的,我们只需要用就好了。但要注意,这个是个半字的写操作,威少是uint16_t 的数据算半字呢,因为单片机是32的,对...