HAL_StatusTypeDef status = HAL_OK;/* Unlock the Flash to enable the flash control register access ***/HAL_FLASH_Unlock();/* Get the sector where start the user flash area */NbrOfPages = (USER_FLASH_END_ADDRESS - start)/FLASH_PAGE_SIZE; pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES; ...
HAL_FLASH_Unlock(): 解锁Flash,以允许进行写操作。 HAL_FLASH_Lock(): 锁定Flash,以防止进行写操作。 HAL_FLASH_Program():向Flash写入数据。 HAL_FLASH_Read():从Flash读取数据(实际上,Flash的数据是通过直接访问地址来读取的,HAL库并没有提供专门的读取函数)。 HAL_FLASHEx_Erase(): 擦除Flash中的指定页...
HAL_FLASH_Unlock(); 解锁内部flash函数,默认内部flASH是锁上的,使用的时候,需要解锁。 FLASH_EraseInitTypeDef 擦除内部flash的结构体, HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError) 擦除函数 需要注意的是 与flash有关的函数,在两个文件中 #include “stm32...
解锁Flash,通过HAL库的函数HAL_FLASH_Unlock实现。 检查是否写保护,使能Flash可以编程,然后对其进行编程操作,编程完毕后,等待编程完成,然后禁止Flash编程位。具体操作可以通过HAL库的函数HAL_FLASH_Program实现。 Flash的擦除流程如下: 解锁Flash,通过HAL库的函数HAL_FLASH_Unlock实现。 如果是BANK1或者BANK2需要擦除,调...
在写入或擦除之前调用 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()函数会入参一个有关清除扇区配置的结构体对象,这个参...
解锁Flash写保护:HAL_FLASH_Unlock( ); 对Flash进行写操作:Flash的写操作,需要擦除一整页后再重新写入,不能对特定处进行修改,写的时候可以分多次写入。注意:擦写次数较多数据的不建议使用内部Flash进行存储,手册中给的数据是擦写1W次。 对Flash重新上锁:HAL_FLASH_Lock( ); ...
1.HAL_StatusTypeDef HAL_FLASH_Unlock(void); 作用:解锁FLASH控制寄存器访问 返回值:写寄存器的状态 2.HAL_StatusTypeDef HAL_FLASH_Lock(void); 作用:锁定FLASH控制寄存器访问 返回值:写寄存器的状态 3.HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void); ...
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 ...
解锁Flash,通过HAL库的函数HAL_FLASH_Unlock实现。 如果是BANK1或者BANK2需要擦除,调用函数FLASH_MassErase,然后等待擦除完成,完成之后关闭BANK1和BANK2的擦除请求位BER1/BER2 如果是扇区擦除,调用函数FLASH_Erase_Sector,然后等待擦除完成,完成之后关闭扇区的擦除请求位SER。