#define FLASH_READ_ADDR ((uint32_t)0x0800FC00) // 读取地址 // 写入Flash void FLASH_Write(uint32_t addr, uint32_t data) { HAL_FLASH_Unlock(); HAL_FLASHEx_Erase(&addr, 1); HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, data); HAL_FLASH_Lock(); } // 读取Flash uint32_t FLA...
在STM32 HAL库中,与Flash读写相关的API函数主要包含在stm32f4xx_hal_flash.h(或其他相应系列的头文件)中。常用的函数包括: HAL_FLASH_Unlock(): 解锁Flash编程接口。 HAL_FLASH_Lock(): 锁定Flash编程接口。 HAL_FLASH_Erase(): 擦除Flash扇区或页。 HAL_FLASH_Program():向Flash写入数据。 3. 编写代码以...
voidStartReadFlashInit(void){ u16 temp=STMFLASH_ReadHalfWord(FLASH_READ_FLAG);//读取一个16位数printf("ReadNum:%d\r\n",temp);//默认初始化 概率是1/65535if(temp!=858){ temp=858;//STMFLASH_Write,这个函数写一个数据就等价于以下HAL_FLASH_Unlock();//FLASH解锁FLASH_PageErase(FLASH_READ_FLAG...
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(); } 写入数据前,需解锁并擦除,如上代码所示。 编写...
下面举个例子写入数据0x0001到Flash中uint16_t my_add =0x0001; uint32_tRobot_Num_Flash_Add =0x08005000; FLASH_EraseInitTypeDef My_Flash;//声明 FLASH_EraseInitTypeDef 结构体为 My_FlashHAL_FLASH_Unlock();//解锁FlashMy_Flash.TypeErase= FLASH_TYPEERASE_PAGES;//标明Flash执行页面只做擦除操作My_...
1 首先双击打开keil5软件,如图 2 在软件中新建一个.C和.H文件并加入工程,如图 3 然后在.c文件中编写HAL库的FLASH写数据函数,如图 4 接着是Flash的读取函数,如图 5 随后在.H文件中声明两个函数,如图 6 最后点击编译的快捷键,如图,没有错误和警告就可以使用了。注意事项 注意内部Flash擦写次数是有限制...
HAL_FLASH_Program()函数对于不同芯片的HAL库,入参也不甚相同,有的芯片可以按1字节、2字节、4字节、8字节写入,比如STM32F407,有的芯片只能按8字节写入,比如STM32L4。同时,Flash写入时要注意字节对齐,比如现在要写一个双字节到Flash某一地址,那么该地址必须也是双字节的整数倍;如果要写一个4字节,那么同理,地址...
stm32的hal库确实提供有关flash的操作代码库,,但是我们在操作flash之前依旧需要对stm32的flash进行简单的介绍。 首先,stm32的flash读不限制次数,写大约100 0000次,也就是说一天对同一个地方写100次,你需要大约20年才能写坏,所以可以你可以放心大胆的写。
在写入或擦除之前调用 HAL_FLASH_Unlock()。在操作完成后调用 HAL_FLASH_Lock()。
STM32F1系列HAL库读写内部FLASH 扫描以下二维码,关注公众号雍正不秃头获取更多STM32资源及干货! 测试环境: STM32F103RB 20KBytes RAM 128KBytes FLASH 注:本章节代码只适合STM32F1系列! 头文件 /** * @brief Create by AnKun on 2019/10/10 ...