| 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 * ...
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...
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...
// 写入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_ProgramHalfWord(addr + i, data[i/2]); } FLASH_Lock(); } uint16_t ReadFlash(uint32_t addr) { return *(__IO uint16_t*)addr; } 4. 重要注意事项 中断安全:操作期间建议关闭全局中断 __disable_irq(); // Flash操作 __enable_irq(); ...
*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)
FLASH_ProgramHalfWord(add,dat); //从指定页的addr地址开始写 FLASH_ClearFlag(FLASH_FLAG_BSY|FLASH_FLAG_EOP|FLASH_FLAG_PGERR|FLASH_FLAG_WRPRTERR);//清除标志位 FLASH_Lock(); //锁定FLASH编程擦除控制器 } //FLASH读出数据 u16 FLASH_R(u32 add){ //参数1:32位读出FLASH地址。返回值:16位...