STM32_Flash模拟eeprom

这篇博客详细介绍了如何在STM32单片机上利用Flash存储模拟EEPROM的操作,通过`stmflash.h`、`stmflash.c`和`main.c`三个关键文件的实现,阐述了这一技术的应用和实现步骤。
摘要由CSDN通过智能技术生成

stmflash.h

  stmflash.h如下:

#ifndef __STMFLASH_H__
#define __STMFLASH_H__
#include "sys.h"

#define STM32_FLASH_SIZE 512 /* 所选STM32的FLASH容量大小(单位为K) */
#define STM32_FLASH_WREN 1 /* 使能FLASH写入(0为不使能,1为使能) */
#define STM32_FLASH_BASE 0x08000000 /* STM32的FLASH起始地址 */

u16 STMFLASH_ReadHalfWord ( u32 faddr ); /* 读出半字 */
void STMFLASH_WriteLenByte ( u32 WriteAddr, u32 DataToWrite, u16 Len ); /* 指定地址开始写入指定长度的数据 */
u32 STMFLASH_ReadLenByte ( u32 ReadAddr, u16 Len ); /* 指定地址开始读取指定长度数据 */
void STMFLASH_Write ( u32 WriteAddr, u16 *pBuffer, u16 NumToWrite ); /* 从指定地址开始写入指定长度的数据 */
void STMFLASH_Read ( u32 ReadAddr, u16 *pBuffer, u16 NumToRead ); /* 从指定地址开始读出指定长度的数据 */
void Test_Write ( u32 WriteAddr, u16 WriteData ); /* 测试写入 */
#endif

stmflash.c

  stmflash.c如下:

#include "stmflash.h"
#include "delay.h"
#include "usart.h"

u16 STMFLASH_ReadHalfWord ( u32 faddr ) {
    /* 读取指定地址的半字(16位数据),参数faddr是读地址(此地址必须为2的倍数) */
    return * ( vu16 * ) faddr;
}

#if STM32_FLASH_WREN  /* 如果使能了写 */

/* 不检查的写入。参数WriteAddr是起始地址,pBuffer是
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值