stm32f103c hal库读写flash
时间: 2024-08-20 20:02:26 浏览: 52
STM32F103C系列微控制器使用HAL库(Hardware Abstraction Layer)操作Flash存储器,其过程通常包括以下几个步骤:
1. 包含头文件:首先在C/C++源文件中包含`stm32f1xx_hal_flash.h`头文件,该文件包含了所有与Flash相关的函数声明。
```cpp
#include "stm32f1xx_hal_flash.h"
```
2. 初始化Flash:在主程序启动时,需要对Flash HAL模块进行初始化,通过调用`FLASH_Init()`函数。
```cpp
FLASH_HandleTypeDef flash;
HAL_FLASH_Init(&flash);
```
3. 选择操作模式:例如,如果你想擦除某个区域的Flash,可以设置操作模式到 erased状态。
```cpp
HAL_FLASH_OB_Unlock(); // 解锁闪存操作块
HAL_FLASHEx_Erase(&flash, FLASH_BANK_0, FLASHSector); // erase a sector
HAL_FLASH_OB_Lock(); // 锁定闪存操作,防止意外修改
```
4. 操作数据:擦除后,你可以使用`HAL_FLASH_Program()`来写入新的数据,它接受起始地址、待写的数据和长度。
```cpp
uint8_t myData[] = {0x00, 0x01, 0x02};
HAL_FLASH_Program(&flash, FLASH_WRITE_ID, address, sizeof(myData));
```
5. 结束操作并等待完成:如果需要,可以调用`HAL_Delay()`等待Flash操作完成,然后关闭Flash资源。
```cpp
while (!HAL_FLASH_GetFlagStatus(flash, FLASH_FLAG_BSY)) {}
HAL_FLASH_DeInit(&flash);
```