蓝桥杯嵌入式EEPROM

文章介绍了如何使用STM32CubeMX配置PB6和PB7引脚为输出模式,以及如何实现I2C通信的读写功能。提供了x24c02_write和x24c02_read函数用于写入和读取数据,并强调了在读写操作后添加延时函数的重要性。此外,还详细说明了在系统首次启动时对特定地址的检查和初始化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.STM32CubeMX配置

就是将PB6.PB7设置为输出模式

2.代码

把i2c通信的驱动文件放进去,在头文件位置添加I2C的头文件

编写读写代码

void x24c02_write(unsigned char address,unsigned char info)
{
     I2CStart();
	 I2CSendByte(0xa0);
	 I2CWaitAck();
	
	 I2CSendByte(address);
	 I2CWaitAck();
	 I2CSendByte(info);
	 I2CWaitAck();
	 I2CStop();
}
uint8_t x24c02_read(uint8_t address)
{
   unsigned char Val;
	
	 I2CStart();
	 I2CSendByte(0Xa0);
	 I2CWaitAck();
	 
	 I2CSendByte(address);
	 I2CWaitAck();
	 I2CStop();
	
	 I2CStart();
	 I2CSendByte(0xa1);
	 I2CWaitAck();
	 Val = I2CReceiveByte();
	 I2CStop();
	
	 return (Val);
}

  uint8_t Num;
  Num = x24c02_read(0X02);
  x24c02_write(0X02,++Num);

使用的时候注意要在读写函数后面添加延时函数。

处理第一次上电问题

void Write(unsigned char address,unsigned char info)
{
     I2CStart();
	 I2CSendByte(0Xa0);
	 I2CWaitAck();
	 
	 I2CSendByte(address);
	 I2CWaitAck();
	 I2CSendByte(info);
	 I2CWaitAck();
	 I2CStop();
}
uint8_t Read(unsigned char address)
{
     I2CStart();
	 I2CSendByte(0xa0);
	 I2CWaitAck();
	 I2CSendByte(address);
	 I2CWaitAck();
	 I2CStop();
	 
	 I2CStart();
	 I2CSendByte(0xa1);
	 I2CWaitAck();
	 unsigned char val = I2CReceiveByte();
	 I2CStop();
	 return val;
}

 如果是第一次读取,0x00位置的数值大概率不等于50,然后更改为50,同时将初始值写入;

第二次及以后就直接读取数值。

void Value_Init()
{
    if(Read(0x09)!=50)
	 {
	      HAL_Delay(10);Write(0x09,50);HAL_Delay(10);
		  Write(0x00,1); HAL_Delay(10);
		  sprintf((char*)TX,"%d\r\n",iic_value);
	      HAL_UART_Transmit_IT(&huart1,TX,strlen((char*)TX));
	 }
	 if(Read(0x09)==50)
	 {
	      HAL_Delay(10);
		  iic_value = Read(0x00);HAL_Delay(5);
		  sprintf((char*)TX,"%d\r\n",iic_value);
	      HAL_UART_Transmit_IT(&huart1,TX,strlen((char*)TX));
		  iic_value=iic_value+1;
		  Write(0x00,iic_value);HAL_Delay(5);
	 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝本生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值