前言
同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屏幕显示出来。