用C语言写STM32F4 单片机 flash读写两个函数
时间: 2024-11-05 22:26:18 浏览: 11
在STM32F4单片机上操作Flash需要特定库的支持,如STM HAL库或ST提供的CubeMX生成的驱动。以下是使用HAL库编写基本的Flash读写功能的一个例子:
```c
#include "stm32f4xx_hal.h"
// Flash读取函数
uint32_t ReadFlash(uint32_t Address) {
uint8_t *pData = (uint8_t*)Address;
HAL_StatusTypeDef status;
// 开启闪存读取模式
status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, pData);
if (status != HAL_OK) {
while (1); // 无法读取则死循环,实际应用需处理错误
}
// 返回读取的数据字节数
return sizeof(pData);
}
// Flash写入函数
void WriteFlash(uint32_t Address, uint32_t Data) {
uint8_t *pBuffer = (uint8_t*)&Data; // 数据转换成字节数组
HAL_StatusTypeDef status;
// 写入数据前先清除该地址
status = HAL_FLASH_erase_sector(Address / FLASH_SECT_SIZE);
if (status != HAL_OK) {
// 处理擦除失败的情况
}
// 开始写入
status = HAL_FLASH_Program(FLASH_TYPEERASE_WRITEWord, Address, pBuffer);
if (status != HAL_OK) {
// 处理写入失败的情况
}
}
阅读全文