//step1 解锁内部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); //st...
在写入或擦除之前调用 HAL_FLASH_Unlock()。在操作完成后调用 HAL_FLASH_Lock()。
HAL_FLASH_Unlock(); 解锁内部flash函数,默认内部flASH是锁上的,使用的时候,需要解锁。 FLASH_EraseInitTypeDef 擦除内部flash的结构体, HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError) 擦除函数 需要注意的是 与flash有关的函数,在两个文件中 #include “stm32...
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 =...
在使用STM32的HAL库进行FLASH操作的时候,有以下几点值得注意: 1. 注意顺序 先解锁Flash,再擦除片区,再写入,写完了别忘了加锁。 HAL_FLASH_Unlock(); HAL_FLASHEx_Erase(); HAL_FLASH_Program(); HAL_FLASH_Lock(); 2. 擦除相关 HAL_FLASHEx_Erase()函数会入参一个有关清除扇区配置的结构体对象,这个参...
if(HAL_FLASH_Unlock() != HAL_OK){ tryCount++;if (tryCount < 5){ /* 等待 */ FLASH_...
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("擦除 成功\r\n");}__enable_irq();//擦除后...
在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. 编写代码以...
STM32L031写Flash不使用HAL库 void flash_unlock(void) { /* (1) Wait till no operation is on going */ /* (2) Check if the PELOCK is unlocked */ /* (3) Perform unlock sequence */ while ((FLASH->SR & FLASH_SR_BSY) != 0) /* (1) */...
Flash的擦除流程如下: 解锁Flash,通过HAL库的函数HAL_FLASH_Unlock实现。 如果是BANK1或者BANK2需要擦除,调用函数FLASH_MassErase,然后等待擦除完成,完成之后关闭BANK1和BANK2的擦除请求位BER1/BER2 如果是扇区擦除,调用函数FLASH_Erase_Sector,然后等待擦除完成,完成之后关闭扇区的擦除请求位SER。