STM32标准库实现Flash存储和读取
在STM32F103C8T6微控制器上使用标准库实现Flash存储和读取数据可以通过以下步骤完成:
-
首先,确保你已经配置好了STM32F103C8T6的Flash存储器。默认情况下,Flash存储器已经被分成了两个扇区,一个用于存放程序代码(Main Flash Memory),另一个用于存放数据(Data EEPROM)。
-
在代码中包含
stm32f10x_flash.h
头文件,该头文件包含了Flash存储器的相关函数和宏定义。 -
初始化Flash存储器。你可以使用
FLASH_Unlock()
函数来解锁Flash存储器,并且使用FLASH_ClearFlag()
函数来清除相关的标志位。
#define FLASH_ADDRESS_VOLTAGE 0x08003000 // 电压起始地址 #define FLASH_ADDRESS_CURRENT 0x08004000 // 电流起始地址
// 写入数据 void Write_Flash(uint16_t data, u32 flash_address) { FLASH_Status status = FLASH_COMPLETE; FLASH_Unlock(); // 解锁Flash写入操作 FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); // 清除Flash中断标志位 status = FLASH_ErasePage((uint32_t)flash_address); while (status == FLASH_COMPLETE) { status = FLASH_ProgramWord(flash_address, data); } FLASH_Lock(); }
// 读取数据 uint32_t read_data_from_flash(uint32_t address) { return *(volatile uint32_t*)address; // 读取Flash中指定地址的数据 }