STM32HAL库-针对芯片内部EEprom读写操作介绍

桥架支撑架STM32HAL库-针对芯⽚内部EEprom读写操作介绍⽬录
概述
本篇⽂章介绍如何使⽤STM32HAL库,操作芯⽚内部EEprom读写数据,类似操作Flash,可实现掉电保存数据功能。(注:有些型号才有内部EEprom,没有的话,只能使⽤内部FLASH模拟EEprom,或者外挂EEprom芯⽚)
硬件:STM32L051C8T6最⼩系统板
软件:Keil 5.29  + STM32CubeMX6.2.1
便携式存储
⼀、使⽤⽅法
通过参阅《STM32数据⼿册》得知,通过⽬录到芯⽚中的内部eeprom章节,如下所⽰:
在《STM32中⽂参考⼿册》pdf⽂档中到,第3.3⼩节:嵌⼊式闪存,对应的页数57。
这⾥我使⽤的是STM32L051C8T6的eeprom是512byte,通过⼿册得知是属于⼩容量,所以只需看地址分配图与每⼀页对应的⼤⼩(字节)即可。
想更详细的了解,请阅读《STM32数据⼿册》。
⼆、STM32CubeMx配置
顶网
三、Examples
打开STM32CubeMx⽣成的keil⼯程,新建Bsp⽂件夹,同时分别新建bsp_eeprom.c与bsp_eeprom.h⽂件,并把这两个⽂件,添加keil ⼯程中来即可。
添加头⽂件路径
1、bsp_eeprom.h⽂件
/*-------------------------------------------------*/
/*                                                */
/*            实现内部eeprom功能的头⽂件            */
/*                                                */
/*-------------------------------------------------*/
#ifndef __EEPROM_H
#define __EEPROM_H
#include "stm32l0xx.h"  //包含需要的头⽂件
#define DATA_EEPROM_START_ADDR    0x08080000  //起始地址
#define USER_DATA_EEPROM_ADDR    DATA_EEPROM_START_ADDR + 0x00000000  //⽤户地址
#define DATA_EEPROM_BYTE_SIZE    0x01FF    //空间
#define DATA_EEPROM_END_ADDR      DATA_EEPROM_START_ADDR + DATA_EEPROM_BYTE_SIZE  //结束地址#define iEEPROM_CHECK_NUM      2
桑叶采摘器HAL_StatusTypeDef EEPROM_WriteData(uint32_t Address, uint32_t *wData, uint32_t len);三羟甲基丙烷三丙烯酸酯
HAL_StatusTypeDef EEPROM_ReadData(uint32_t Address, uint32_t *rData, uint32_t len);
HAL_StatusTypeDef EEPROM_WRITE_Verify_CHECK(uint32_t Address, uint32_t *wData, uint32_t len);
HAL_StatusTypeDef EEPROM_Read_Verify_CHECK(uint32_t Address, uint32_t *rData, uint32_t len);
#endif
2、bsp_eeprom.c⽂件
/*-------------------------------------------------*/
/*                                                */
/*            实现内部eeprom功能的源⽂件            */
/*                                                */
/*-------------------------------------------------*/
#include "bsp_eeprom.h"    //包含需要的头⽂件
#include <string.h>
#include "usart.h"    //包含需要的头⽂件
#include "stdio.h"
/*-------------------------------------------------*/
/*函数名:内部eeprom擦除功能                          */
小型地源热泵/*参数:Address:擦除地址                        */
/*参数:wData:擦除数据缓冲区                    */
/*参数:len:擦除数据总长                        */
/*返回值:⽆                                      */
/*-------------------------------------------------*/
HAL_StatusTypeDef EEPROM_EraseData(uint32_t start, uint32_t NumberSectors)
{
uint32_t i;
uint32_t NbrOfPages = 0;
uint32_t Address = start;
HAL_StatusTypeDef status = HAL_OK;
printf("EEPROM_EraseData len:%d\r\n", NumberSectors);
NbrOfPages = (DATA_EEPROM_END_ADDR - Address)/FLASH_PAGE_SIZE;
if(NumberSectors > NbrOfPages) return (HAL_ERROR);
for(i=0; i<NumberSectors; i++){                  //for循环,需要写⼊多少数据,就循环⼏次
status = HAL_FLASHEx_DATAEEPROM_Erase(Address + i * 4);
}
if (status != HAL_OK)

本文发布于:2024-09-23 10:30:20,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/188835.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   擦除   地址   实现   功能   需要   需看   页数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议