FLASH是单片机内存管理的重要一环。今天进行学习记录,希望能帮助到大家
简单的书写代码,都是库函数,没什么逻辑,在此就不废话了
#include "stm32f10x.h" // Device header
uint32_t MYFLASH_ReadWord(uint32_t Address) //字(32)位进行读取
{
return *((__IO uint32_t *)(Address));
}
uint16_t MYFLASH_ReadHalWord(uint32_t Address)//半字(16)位进行读取
{
return *((__IO uint16_t *)(Address));
}
uint8_t MYFLASH_ReadByte(uint32_t Address)//字节(8)位进行读取
{
return *((__IO uint8_t *)(Address));
}
void MYFLASH_EraseAllPages() //全部擦除函数
{
FLASH_Unlock(); //进行解锁
FLASH_EraseAllPages();
FLASH_Lock(); //进行上锁
}
void MYFLASH_ErasePage(uint32_t PageAddress) //页擦除函数
{
FLASH_Unlock();
FLASH_ErasePage(PageAddress);
FLASH_Lock();
}
void MYFLASH_ProgramWord(uint32_t Address, uint32_t data)//写数据
{
FLASH_Unlock();
FLASH_ProgramWord(Address,data);
FLASH_Lock();
}
void MYFLASH_ProgramHalfWord(uint32_t Address, uint16_t data)//写数据
{
FLASH_Unlock();
FLASH_ProgramHalfWord(Address,data);
FLASH_Lock();
}
MYFLASH_ErasePage(0x0800FC00); //对FLASH值进行写入
MYFLASH_ProgramWord(0x0800fc00,TEMP_1);
注释:
0x0800fc00:STM32书写数据从0x08000000开始,64K大小FLASH到0x0x0800ffff 止
因为前面书写了我们的程序,不能更改,所以我们用户的数据就可以从后往前写,所以从63K开始写。
MYFLASH_ReadWord(0x0800fc00);
直接调用就行,和函数用法一样