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...
voidFLASH_W(uint32_t addr,uint16_t flash_read){//传入了需要写的flash地址,及写入的内容FLASH_EraseInitTypeDef My_Flash;//声明 FLASH_EraseInitTypeDef 结构体为 My_FlashHAL_FLASH_Unlock();//解锁FlashMy_Flash.TypeErase= FLASH_TYPEERASE_PAGES;//标明Flash执行页面只做擦除操作My_Flash.PageAddress =...
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(); } 写入数据前,需解锁并擦除,如上代码所示。 编写...
1 首先双击打开keil5软件,如图 2 在软件中新建一个.C和.H文件并加入工程,如图 3 然后在.c文件中编写HAL库的FLASH写数据函数,如图 4 接着是Flash的读取函数,如图 5 随后在.H文件中声明两个函数,如图 6 最后点击编译的快捷键,如图,没有错误和警告就可以使用了。注意事项 注意内部Flash擦写次数是有限制...
stm32的hal库确实提供有关flash的操作代码库,,但是我们在操作flash之前依旧需要对stm32的flash进行简单的介绍。 首先,stm32的flash读不限制次数,写大约100 0000次,也就是说一天对同一个地方写100次,你需要大约20年才能写坏,所以可以你可以放心大胆的写。
(3) 针对所需存储器地址(主存储器块或 OTP 区域内)执行数据写入操作; (4) 等待 BSY 位被清零时,表示写入完成。 写flash操作流程图 读flash操作流程 4、代码实现 官方库函数提供了几个接口函数,可对flash进行解锁、上锁、读、写、擦除等操作 stm32f1xx_hal_flash.h ...
在写入或擦除之前调用 HAL_FLASH_Unlock()。在操作完成后调用 HAL_FLASH_Lock()。
在使用STM32的HAL库进行FLASH操作的时候,有以下几点值得注意: 1. 注意顺序 先解锁Flash,再擦除片区,再写入,写完了别忘了加锁。 HAL_FLASH_Unlock(); HAL_FLASHEx_Erase(); HAL_FLASH_Program(); HAL_FLASH_Lock(); 2. 擦除相关 HAL_FLASHEx_Erase()函数会入参一个有关清除扇区配置的结构体对象,这个参...
HAL_FLASH_Lock(); //上锁 return 2; //擦除有错误,返回2 } //下面这些是清除标志位 __HAL_FLASH_DATA_CACHE_DISABLE(); __HAL_FLASH_INSTRUCTION_CACHE_DISABLE(); __HAL_FLASH_DATA_CACHE_RESET(); __HAL_FLASH_INSTRUCTION_CACHE_RESET(); ...
流程就是 擦除->写入数据->读出数据 intmain(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while(1){HAL_FLASH_Unlock();uint32_tPageError=0;__disable_irq();//擦除前关闭中断if(HAL_FLASHEx_Erase(&EraseInitStruct,&PageError)==HAL_OK){printf("擦除 成功\...