| FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASH_ProgramWord(addr, data);FLASH_LockBank1();
(flash_status == FLASH_COMPLETE); i++) { flash_status = FLASH_ProgramWord(address,buffdata[i]); address = address + 4; } //上锁 FLASH_Lock(); if(flash_status == FLASH_COMPLETE) { return TRUE; } return FALSE; } //从指定地址读取固定长度数据 void FlashRead(u32 readaddr,u32 * ...
for(EraseCounter=0;(EraseCounter<NbrOfPage)&&(FLASHStatus==FLASH_COMPLETE);EraseCounter++) { FLASHStatus=FLASH_ErasePage(StartAddr+(PageSize*EraseCounter)); } //开始写数据 Address = StartAddr; i=0; while((Address<EndAddr)&&(FLASHStatus==FLASH_COMPLETE)) { FLASHStatus=FLASH_ProgramWord(Addr...
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);FLASH_Status FLASH_ProgramHalf...
2. 编写函数以在指定Flash地址写入数据 STM32F103的Flash写入操作需要通过特定的解锁序列和编程命令来完成。 c #include "stm32f10x.h" void FLASH_Unlock(void); void FLASH_Lock(void); FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); void FLASH_Unlock(void) { if ((FLASH->CR...
// 写入32位数据到指定地址 void FLASH_Write(uint32_t address, uint32_t data) { // 1.解锁FLASH FLASH_Unlock(); // 2.擦除页,以便写入 FLASH_Erase_Sector(FLASH_SECTOR_11, FLASH_VOLTAGE_RANGE_3); // 擦除目标页 // 3.写入数据 if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address, ...
FLASH_ProgramHalfWord(startAddress+dataIndex*2,writeData[dataIndex]); } FLASH_Lock();//上锁写保护 } 在擦除之前应该将页面上的数据读取出来与要写入的数据合并,待擦除后再写入,但这样数据量很大(大容量是2K一个扇区),所以考虑到是少量数据存储,所以每次都将全部数据同时写入,简化操作,也减少数据处理量。经...
FLASH_Unlock();//FLASH解锁 FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);//清标志位 FLASH_ErasePage(addr);while(n--){r1=*(p++);r1|=*(p++)<<8;r1|=*(p++)<<16;r1|=*(p++)<<24;FLASH_ProgramWord(addr, r1);addr+=4;...
*Name:WriteFlashOneWord *Function:向内部Flash写入32位数据 *Input:WriteAddress:数据地址(偏移地址)WriteData:写入数据 *Output:NULL *Author:ValerianFan *Date:2014/04/09 *E-Mail:fanwenjingnihao@163.com *Other: ***/ voidWriteFlashOneWord(uint32_tWriteAddress,uint32_tWriteData)
to 3.6V], the operation will* be done by byte */if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD...