网站设计的研究方法有哪些,申请域名 建设网站,陕西省住房和城乡建设厅综合网站,企业网站排名怎么优化STM32F1的官方固件库操作FLASH的几个常用函数。这些函数和定义分布在源文件stm32f1xx_hal_flash.c/stm32f1xx_hal_flash_ex.c以及头文件stm32f1xx_hal_flash.h/stm32f1xx_hal_flash_ex.h中。
锁定解函数
对FLASH进行写操作前必须先解锁#xff0c;解锁操作#xff1a;在FLA…STM32F1的官方固件库操作FLASH的几个常用函数。这些函数和定义分布在源文件stm32f1xx_hal_flash.c/stm32f1xx_hal_flash_ex.c以及头文件stm32f1xx_hal_flash.h/stm32f1xx_hal_flash_ex.h中。
锁定解函数
对FLASH进行写操作前必须先解锁解锁操作在FLASH_KEYR写入特定的序列KEY1和KEY2HAL库实现很简单
HAL_StatusTypeDef HAL_FLASH_Unlock(void);写操作完成后要锁定FLASH
HAL_StatusTypeDef HAL_FLASH_lock(void);写操作函数
HAL 库提供了一个通用的 FLASH 写操作函数HAL_FLASH_Program该函数声明如下
HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram,uint32_t Address,uint64_t Data);该函数有三个入口参数。
TypeProgram区分要写入的数据类型取值为FLASH_TYPEPROGRAM_BYTE字节8 位FLASH_TYPEPROGRAM_HALFWORD半字 16 位 FLASH_TYPEPROGRAM_WORD 字 32 位和FLASH_TYPEPROGRAM_DOUBLEWORD双字64 位。Address设置要写入数据的FLASH地址。Data要写入的数据类型参数默认是64位的如果小于64位会进行类型转换。
擦除函数
HAL 库提供的擦除函数在 stm32f1xx_hal_flash_ex.c 中定义。和编程函数一样HAL 提供了一个通用的基于小区擦除的函数 HAL_FLASHEx_Erase该函数声明如下
HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);typedef struct
{uint32_t TypeErase; //擦除类型uint32_t Banks; //擦除的 Bank 编号uint32_t PageAddress; //擦除页面地址uint32_t NbPages; //擦除的页面数
} FLASH_EraseInitTypeDef;TypeErase设置擦除类型是Page擦除还是BANK级别的批量擦除取值为FLASH_TYPEERASE_PAGES 或者 FLASH_TYPEERASE_MASSERASE如果是一次擦除一个 Bank 下面的所有 Page那么需要选择 FLASH_TYPEERASE_MASSERASE。Banks设置要擦除的Bank编号只有设置为批量擦除的时候才有效。PageAddress要擦除页面的地址。NbPages要擦除的页面数。
等待操作完成函数
在执行闪存写操作时任何对闪存的读操作都会锁住总线在写操作完成后读操作才能正确地进行 即在进行写或擦除操作时不能进行代码或数据的读取操作。 在每次操作之前都要等待上一次操作完成才能开始。
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);该函数在HAL库中很多地方用到比如擦除函数HAL_FLASHEx_Erase中对FLASH进行擦除操作后会调用该函数等待擦除操作完成。
读FLASH特定地址数据函数
函数固件库没有给出来提供从指定地址读取半个字节
u16 STMFLASH_ReadHalfWord(u32 faddr)
{return *(vu16 *)faddr;
}