stm32f103 HAL 内部flash的读写
时间: 2025-02-16 17:04:52 浏览: 57
STM32F103系列微控制器使用HAL库(HAL库,全称Hardware Abstraction Layer)时,对内部Flash进行读写的操作通常是在驱动层提供的函数中完成的。以下是基本步骤:
1. **包含头文件**:首先,在.c文件中需要包含`stm32f1xx_hal_flash.h`头文件,这是HAL Flash模块的接口定义。
```c
#include "stm32f1xx_hal_flash.h"
```
2. **初始化Flash**:在你的主程序或初始化函数中,调用`FLASH_Init()`函数来初始化Flash组件,设置相关的参数,如等待周期等。
```c
FLASH_HandleTypeDef flash;
HAL_FLASH_DeInit(&flash);
if (HAL_FLASH_Init(&flash) != HAL_OK) {
// Handle error...
}
```
3. **擦除Flash区域**:如果要清除某个区域的数据,可以使用`HAL_FLASH_Erase()`函数,例如擦除整个闪存:
```c
HAL_StatusTypeDef status = HAL_FLASH_Erase(FLASH_REGION_1, 0); // 0表示从开始擦除
if (status != HAL_OK) {
// Handle error...
}
```
4. **写入数据**:使用`HAL_FLASH_Program()`函数将字节数据写入Flash,例如:
```c
uint8_t data[] = {0x01, 0x02, 0x03};
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM, address, sizeof(data), data);
if (status != HAL_OK) {
// Handle error...
}
```
5. **验证写入**:如果支持,可以在写入后使用`HAL_FLASH_GetError()`检查是否有错误。
6. **最终化Flash**:写入完成后,记得调用`HAL_FLASH_Finish()`来关闭当前的操作并刷新闪存内容到存储器。
```c
if (HAL_FLASH_Finish(&flash) != HAL_OK) {
// Handle error...
}
```
阅读全文
相关推荐


















