(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 * ...
| FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);FLASH_ProgramWord(addr, data);FLASH_LockBank1();
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);FLASH_Status FLASH_ProgramHalf...
= HAL_OK) { // 错误处理 Error_Handler(); } if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, Data) != HAL_OK) { // 错误处理 Error_Handler(); } HAL_FLASH_Lock(); } void Error_Handler(void) { // 用户可以添加自己的错误处理代码 while (1) { } } 这段代码首先解锁Flash以...
// 写入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, ...
{ FLASHStatus=FLASH_ProgramWord(Address,p_data[i++]); Address=Address+4; } //检验数据是否出错 Address = StartAddr; i=0; while((Address < EndAddr) && (MemoryProgramStatus != 0)) { if((*(vu32*) Address) != p_data[i++]) ...
本次使用RT-Thread studio编写,使用为5.02完整版,目的是将内部flash进行分区,可以直接在内部flash存储数据。 一、功能配置 首先是打开设置里的FAL组件,因为我这里不需要外部内存,SFUD驱动就没打开: 然后是配置两个参数,一个在board.h里,定义BSP_USING_ON_CHIP_FLASH,一个是在stm32xxxx_hal_config.h里定义HAL_FLA...
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(); ...
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;...
to 3.6V], the operation will* be done by byte */if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD...