第十一届蓝桥杯物联网设计与开发实验——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之间添加以下代码
第十一届蓝桥杯物联网设计与开发实验——ex6 E2PROM读写实验_第1张图片
USER CODE BEGIN 4USER CODE END 4之间定义EEPROM读函数
第十一届蓝桥杯物联网设计与开发实验——ex6 E2PROM读写实验_第2张图片
USER CODE BEGIN PFPCODE END PFP之间声明读函数
在这里插入图片描述
USER CODE BEGIN 2USER CODE END 2之间添加以下代码
第十一届蓝桥杯物联网设计与开发实验——ex6 E2PROM读写实验_第3张图片

你可能感兴趣的:(蓝桥杯物联网设计与开发)