第十一届蓝桥杯物联网设计与开发实验——ex6 E2PROM读写实验

基础实验 – 基于省赛资源套装

ex6 E2PROM读写实验

实验目的:掌握芯片内部E2PROM的使用方法。 (注意:因为是按照‘字’的方式写入的,所以写入的地址必须是‘4’的整数倍,否则会进入hard fault)
实验内容:将LED灯闪烁次数写入E2PROM,每次重启设备后,闪烁次数加1,同时E2PROM的数据更新。
实验现象:每次重启设备后,LD5闪烁次数加1。

STM32CubeMX配置

  1. 目标选择
  2. 引脚分配
  3. 外设配置
  4. 时钟配置
  5. 工程配置
1.目标选择

新建工程
在这里插入图片描述
选择MCU 输入STM32L071KB
在这里插入图片描述
在这里插入图片描述

2.引脚分配

PC15引脚:GPIO_Output(输出模式)
在这里插入图片描述

3.外设配置

在这里插入图片描述
GPIO输出电平:高
GPIO模式:推挽输出
GPIO上拉电阻/下拉电阻:不上拉电阻/下拉电阻
输出速度:非常快
在这里插入图片描述

4.时钟配置

时钟源:旁路时钟源
在这里插入图片描述
时钟频率:32MHz时钟
在这里插入图片描述

5.工程配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

keil5程序编写

1.选择STM32L071KBUx芯片

在这里插入图片描述

2.HAL库函数解析
锁定解锁函数

对 FLASHEx_DATAEEPROM 进行写操作前必须先解锁,使用的 HAL 库函数是:

HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Unlock()    //解锁函数

在对 FLASHEx_DATAEEPROM 写操作完成之后,我们要锁定 FLASHEx_DATAEEPROM,使用的 HAL 库函数是:

HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Lock()    //解锁函数
写操作函数

HAL 库提供了一个通用的FLASHEx_DATAEEPROM写操作函数,该函数声明如下:

HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data)    //写操作函数
入口参数描述
TypeProgram用来区分要写入的数据类型,取值为:FLASH_TYPEPROGRAM_BYTE(字节:8 位),FLASH_TYPEPROGRAM_HALFWORD(半字 : 16 位 ) , FLASH_TYPEPROGRAM_WORD ( 字 : 32 位 ) 和FLASH_TYPEPROGRAM_DOUBLEWORD(双字:64 位)
Address用来设置要写入数据的 FLASHEx_DATAEEPROM 地址
Data写入的数据类型,这个参数默认是 64 位的,如果你要写入小于 64 位的数据比如 16 位,程序会进行类型转换。
擦拭函数

HAL 提供了一个通用的基于小区擦除的函数 ,该函数声明如下:

HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Erase(uint32_t Address)
入口参数描述
Address用来设置要擦拭数据的 FLASHEx_DATAEEPROM 地址)
3.添加代码

USER CODE BEGIN 1USER CODE END 1之间添加以下代码
在这里插入图片描述
USER CODE BEGIN 4USER CODE END 4之间定义EEPROM读函数
在这里插入图片描述
USER CODE BEGIN PFPCODE END PFP之间声明读函数
在这里插入图片描述
USER CODE BEGIN 2USER CODE END 2之间添加以下代码
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小码农正在搬砖中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值