蓝桥杯嵌入式学习笔记——EEPROM

前言

同lcd一样比赛提供的资料中也有IIC的驱动函数,所以无需在配置。

将iic的驱动函数的.c、.h文件添加到自己的工程,然后编写读取和写入的函数即可。

程序

void eeprom_Write(unsigned char Write_add,unsigned char Write_Dat)
{
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	I2CSendByte(Write_add);
	I2CWaitAck();
	I2CSendByte(Write_Dat);
	I2CWaitAck();
	I2CStop();
}

unsigned char eeprom_Read(unsigned char Read_add)
{
	unsigned char WRead_Dat;
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	I2CSendByte(Read_add);
	I2CWaitAck();	
	I2CStop();
	
	I2CStart();
	I2CSendByte(0xa1);
	I2CWaitAck();
	WRead_Dat = I2CReceiveByte();
	I2CSendAck();
	I2CStop();
	
	return WRead_Dat;
}

示例程序

#include "BspSYS.h"
/*   
函数功能 : 外设初始化函数,只执行一遍
函数参数 : 空
返 回 值 : 空
*/
void setup(void)
{
	LCD_Init();//初始化lcd
	LCD_SetBackColor(Black);//设置背景色
	LCD_SetTextColor(White);//设置文本颜色
	LCD_Clear(Black);//清屏为黑色
	
	I2CInit();
	u8 Txt[30],num=eeprom_Read(0x05);
	sprintf(Txt,"Start UP time:%d   ",num);
  LCD_DisplayStringLine(Line0,(u8*)Txt);
	eeprom_Write(0x05,++num);
	
}

/*   
函数功能 : 循环执行函数
函数参数 : 空
返 回 值 : 空
*/
void loop(void)
{
	u8 Txt[30];
	sprintf(Txt,"adc1:%.3fV   ",ADCGerValue(&hadc1));
  LCD_DisplayStringLine(Line1,(u8*)Txt);
	
	sprintf(Txt,"adc2:%.3fV   ",ADCGerValue(&hadc2));
  LCD_DisplayStringLine(Line3,(u8*)Txt);	
	
	
	
	
	HAL_Delay(50);
}


double ADCGerValue(ADC_HandleTypeDef *hadc)
{
	double adc_Value;
	HAL_ADC_Start(hadc);
	adc_Value = HAL_ADC_GetValue(hadc);
	return adc_Value/4096*3.3;
}



 程序效果为记录开机次数,并使用LCD屏幕显示出来。

效果图片

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值