STM32入门Flash相关(24)是做什么用的?

摘要:STM32入门——Flash相关(24) 项目一:读写内部FLASH #include "stm32f10x.h"Device header #include &q
STM32入门——Flash相关(24) 项目一:读写内部FLASH #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Store.h" #include "Key.h" uint8_t KeyNum; //定义用于接收按键键码的变量 int main(void) { /*模块初始化*/ OLED_Init(); //OLED初始化 Key_Init(); //按键初始化 Store_Init(); //参数存储模块初始化,在上电的时候将闪存的数据加载回Store_Data,实现掉电不丢失 /*显示静态字符串*/ OLED_ShowString(1, 1, "Flag:"); OLED_ShowString(2, 1, "Data:"); while (1) { KeyNum = Key_GetNum(); //获取按键键码 if (KeyNum == 1) //按键1按下 { Store_Data[1] ++; //变换测试数据 Store_Data[2] += 2; Store_Data[3] += 3; Store_Data[4] += 4; Store_Save(); //将Store_Data的数据备份保存到闪存,实现掉电不丢失 } if (KeyNum == 2) //按键2按下 { Store_Clear(); //将Store_Data的数据全部清0 } OLED_ShowHexNum(1, 6, Store_Data[0], 4); //显示Store_Data的第一位标志位 OLED_ShowHexNum(3, 1, Store_Data[1], 4); //显示Store_Data的有效存储数据 OLED_ShowHexNum(3, 6, Store_Data[2], 4); OLED_ShowHexNum(4, 1, Store_Data[3], 4); OLED_ShowHexNum(4, 6, Store_Data[4], 4); } } #include "stm32f10x.h" // Device header /** * 函 数:FLASH读取一个32位的字 * 参 数:Address 要读取数据的字地址 * 返 回 值:指定地址下的数据 */ uint32_t MyFLASH_ReadWord(uint32_t Address) { return *((__IO uint32_t *)(Address)); //使用指针访问指定地址下的数据并返回 } /** * 函 数:FLASH读取一个16位的半字 * 参 数:Address 要读取数据的半字地址 * 返 回 值:指定地址下的数据 */ uint16_t MyFLASH_ReadHalfWord(uint32_t Address) { return *((__IO uint16_t *)(Address)); //使用指针访问指定地址下的数据并返回 } /** * 函 数:FLASH读取一个8位的字节 * 参 数:Address 要读取数据的字节地址 * 返 回 值:指定地址下的数据 */ uint8_t MyFLASH_ReadByte(uint32_t Address) { return *((__IO uint8_t *)(Address)); //使用指针访问指定地址下的数据并返回 } /** * 函 数:FLASH全擦除 * 参 数:无 * 返 回 值:无 * 说 明:调用此函数后,FLASH的所有页都会被擦除,包括程序文件本身,擦除后,程序将不复存在 */ void MyFLASH_EraseAllPages(void) { FLASH_Unlock(); //解锁 FLASH_EraseAllPages(); //全擦除 FLASH_Lock(); //加锁 } /** * 函 数:FLASH页擦除 * 参 数:PageAddress 要擦除页的页地址 * 返 回 值:无 */ void MyFLASH_ErasePage(uint32_t PageAddress) { FL
阅读全文