使用FLASH存储和读取数据
写入FLASH存储需要特殊的操作,因为需要先擦除再写入:
#include "stm32f4xx.h"
#define FLASH_USER_START_ADDR ADDR_FLASH_SECTOR_6 // 你需要根据具体芯片选择合适的地址
#define FLASH_USER_END_ADDR ADDR_FLASH_SECTOR_7
void Write_Flash(uint32_t address, uint32_t data) {
// 解锁FLASH控制寄存器
HAL_FLASH_Unlock();
// 擦除FLASH
FLASH_Erase_Sector(FLASH_SECTOR_6, VOLTAGE_RANGE_3);
// 写入数据到FLASH
HAL_FLASH_Program(TYPEPROGRAM_WORD, address, data);
// 锁定FLASH控制寄存器
HAL_FLASH_Lock();
}
int main(void) {
uint32_t address = FLASH_USER_START_ADDR;
uint32_t data = 0x12345678;
// 初始化硬件
SystemInit();
// 写入数据到FLASH
Write_Flash(address, data);
// 读取数据从FLASH
uint32_t read_data = *(uint32_t *)address;
while (1) {
// 主循环
}
}
|