蓝桥杯嵌入式 EEPROM 万能写法

蓝桥杯嵌入式(G431RBT6): EEPROM进阶学习_蓝桥杯嵌入式eeprom-CSDN博客

在拜读了大佬⬆的文章后醍醐灌顶,遂总结了一些考试大概率会用到的套路

一开始肯定是常规的 读 写 EEPROM函数:

void Write_24C02(uint8_t Send_Buff[],uint8_t Send_Addr,uint16_t num)
{
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	
	I2CSendByte(Send_Addr);	//想要写入的地址
	I2CWaitAck();
	
	while(num--)		//传输多少字节的数据
	{
		I2CSendByte(*Send_Buff++);	//想要写入的数据
		I2CWaitAck();		
	}
	
	I2CStop();
}
void Read_24C02(uint8_t Read_Buff[],uint8_t Read_Addr,uint16_t num)
{
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	
	I2CSendByte(Read_Addr);	//想要读的地址
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xa1);
	I2CWaitAck();	
	
	while(num--)		//接收多少字节的数据
	{
		*Read_Buff++ = I2CReceiveByte();
		if(num==0)
		{
			I2CSendNotAck();
		}else{
			I2CSendAck();
		}
	}
	
	I2CStop();
}

然后就是针对不同场景下对读写函数的使用

!重点!:无论是什么数据类型,写法都是一样的!只要注意对应数据类型的字节数产生的地址偏移即可

场景一:读写单个变量

    double num1=3.1415926;
    EEPROM_Write(0x00,(uint8_t *)&num1,sizeof num1);//写入
    HAL_Delaly(10);
    EEPROM_Read(0x00,(uint8_t *)&num,sizeof num);//读取

场景二:读写数组

这里采用按页读写,会很方便,只需给出每页的首地址即可;但要注意每页只有8个字节

        数组不足八字节的情况,直接将数组名丢进去:

    uint8_t array[6]={1,2,3,4,5,6};    // 1B*6=6字节<8字节
    EEPROM_Write(0x00,array,sizeof array);//写
    HAL_Delay(10);
    EEPROM_Read(0x00,array,sizeof array);//读
    HAL_Delay(10);

        数组大于八字节的情况,要分段读写:

    float Apple[3]={1.1,2.2,3.3};    // 4B*3=12字节
    //写
	Write_24C02((uint8_t *)Apple,0x00,8);    //先写前8个字节
	HAL_Delay(2);
	Write_24C02((uint8_t *)Apple+8,0x08,4);    //再将后面4个字节写入
	HAL_Delay(2);
    //读 和写一样的逻辑
    Read_24C02((uint8_t *)Apple,0x00,8);
    Read_24C02((uint8_t *)Apple+8,0x08,4);

常见的基本数据类型的大小

类型字节大小
char1
short2
int4
long4
float4
double8

对于蓝桥杯的话,掌握以上有关EEPROM的知识点大抵是够用的了;祝大家勇夺省一!

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值