HAL_FLASH_Program():向Flash中写入数据。 *(uint32_t*)address:通过指针直接读取Flash中的数据。 3. 初始化Flash接口 在进行Flash操作之前,通常不需要进行特别的初始化,但确保Flash处于未锁定状态是编程前的必要步骤。这可以通过调用HAL_FLASH_Unlock()函数来实现。 4. 实现使用STM32 HAL库向Flash写入数据 以下...
HAL_FLASH_Unlock(); //step2 开始擦除addr对应页 HAL_Status = HAL_FLASHEx_Erase(&pEraseInit,&PageError);//擦除 if(HAL_Status != HAL_OK) printf("内部FlASH擦除失败!rn"); //step3 写入数据 HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,addr,Pdata); //step4 锁定FLASH HAL_FLASH_Lock(); }...
HAL_FLASH_Program(); HAL_FLASH_Lock(); 2. 擦除相关 HAL_FLASHEx_Erase()函数会入参一个有关清除扇区配置的结构体对象,这个参数对应的结构体定义根据不同芯片的HAL库有所不同,F1/F4/L4均不相同,而且同系列不同Flash大小的芯片所能指向的地址也不相同,同时这里面还存在Sector/Page/Bank等概念,这些概念涉及...
HAL_StatusTypeDefHAL_FLASH_Lock(void); 该函数的返回值是HAL_StatusTypeDef枚举类型的值,有 4 个,分别是HAL_OK表示成功,HAL_ERROR表示错误,HAL_BUSY表示忙碌,HAL_TIMEOUT表示超时。 5.3、闪存写操作函数 HAL_FLASH_Program() 函数用于 FLASH 的写入。该函数声明如下: HAL_StatusTypeDefHAL_FLASH_P...
temp=858;//STMFLASH_Write,这个函数写一个数据就等价于以下HAL_FLASH_Unlock();//FLASH解锁FLASH_PageErase(FLASH_READ_FLAG);//擦除页FLASH_WaitForLastOperation(FLASH_WAITETIME);//等待上次操作完成CLEAR_BIT(FLASH->CR, FLASH_CR_PER);//清除标记HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD,FLASH_READ...
Flash 写入操作 写入 Flash 是以 32 位(word)为单位的。可以使用 HAL_FLASH_Program() 来将数据...
其次,你在写入操作中使用了`HAL_FLASH_Program`函数,这个函数的返回值也没有被正确检查。如果写入操作...
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, addr, data) != HAL_OK) { // 编程失败 } HAL_FLASH_Lock(); } uint8_t EEPROM_ReadByte(uint32_t addr) { return *(uint8_t *)(addr); } int main(void) { // 初始化HAL库 HAL_Init(); ...
71.2.1 内部Flash擦除的实现 内部Flash的擦除思路如下: 第1步,获取擦除地址所处的扇区。 第2步,调用函数HAL_FLASH_Unlock解锁。 第3步,调用函数HAL_FLASHEx_Erase擦除一个扇区。 第4步,调用函数HAL_FLASH_Lock上锁。 按照这个思路,程序实现如下:
#include "stm32f4xx_hal_flash_ex.h" 因此需要包含着两个头文件。 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) flash写入数据函数,需要注意的是第一个参数,决定写入数据的类型 八位,16位 32 位。