添加了一些注释

This commit is contained in:
2021-08-09 17:24:28 +08:00
parent 30a814adb9
commit 697e23bebf
5 changed files with 45 additions and 34 deletions
+12 -6
View File
@@ -7,6 +7,8 @@
#include "eeprom.h"
//iic硬件接口
extern I2C_HandleTypeDef hi2c2;
void IIC_SAND_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
@@ -18,17 +20,20 @@ void IIC_READ_DATE(uint16_t DEVICE_ADD,uint16_t IN_DEVICE_ADD,char *DATAS,uint16
{
HAL_I2C_Mem_Read(&hi2c2,DEVICE_ADD,IN_DEVICE_ADD,I2C_MEMADD_SIZE_8BIT,DATAS,LONG,100);
}
eeprom_write_buff_info eeprom_write_buffer;
void EPPROM_SLOWWRITE_INIT()
//因为eeprom芯片的写入速度有限,每写入一个字符都需要等待一段时间才能完成写入
//整个系统不可能等它一个的,传统的解决方法可以使用定时器中断或者多线程开辟子任务在后台保存,
//这里的解决方法是使用状态机,通过一个链表将要保存的数据串起来,再通过状态循环一个个保存,保存延时等于循环用时。
eeprom_write_buff_info eeprom_write_buffer; //创建链表
void EPPROM_SLOWWRITE_INIT() //初始化链表
{
eeprom_write_buffer.buff=NULL;
eeprom_write_buffer.end=NULL;
eeprom_write_buffer.head=NULL;
eeprom_write_buffer.save_timeout=5;
eeprom_write_buffer.save_busy=0;
eeprom_write_buffer.save_timeout=5; //避免状态机循环过快导致的保存失败,这个是最少延时。(感觉没必要写在这里,太浪费空间了)
eeprom_write_buffer.save_busy=0; //最小延时内为忙状态
}
//循环保存服务,检查链表头是否有数据是否忙。
void EEPROM_SLOWWRITE_SERVER()
{
eeprom_write_buff *buff;
@@ -55,11 +60,12 @@ void EEPROM_SLOWWRITE_SERVER()
}
}
//从eeprom读取数据
void EEPROM_READ_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
IIC_READ_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
}
//向eeprom写入数据
void EEPROM_WRITE_BATY(uint16_t IN_DEVICE_ADD,char *DATAS,uint16_t LONG)
{
//IIC_SAND_DATE(EEPROM_ADDRESS,IN_DEVICE_ADD,DATAS,LONG);
+8 -7
View File
@@ -40,7 +40,7 @@ uint16_t TP_Read_AD(char CMD)
TDIN(0); //拉低数据线
TCS(0); //选中触摸屏IC
TP_Write_Byte(CMD);//发送命令字
HAL_GetTick();
HAL_GetTick(); //稍微延时,ad转换需要时间
HAL_GetTick();
HAL_GetTick();
HAL_GetTick();
@@ -127,18 +127,19 @@ uint8_t TP_Read_XY2(int16_t *x,int16_t *y)
}
touch_device t0;// t0 yyds~
touch_config tconfig;
//触摸更新服务
//触摸更新服务,状态机写法,循环获取坐标
void TP_Server()
{
if(TPEN==0)
if(TPEN==0) //如果有触摸
{
TP_Read_XY2(&t0.adc_x,&t0.adc_y);
t0.pix_x=(t0.adc_x/tconfig.x_acc)-tconfig.x_offset;
TP_Read_XY2(&t0.adc_x,&t0.adc_y); //先读取ad值
t0.pix_x=(t0.adc_x/tconfig.x_acc)-tconfig.x_offset;//转换为像素坐标
t0.pix_y=(t0.adc_y/tconfig.y_acc)-tconfig.y_offset;
}
}
//校准用,画一个目标坐标
//r=坐标半径,显示特效用
void TP_DrwaTrage(int x,int y,int r)
{
Draw_Circle(x,y,r+1,GRAY);
@@ -148,7 +149,7 @@ void TP_DrwaTrage(int x,int y,int r)
LCD_DrawLine(x,y,x-10,y,RED);
LCD_DrawLine(x,y,x,y-10,RED);
}
//触摸屏校准
void TP_adjustment()
{
//判断是否需要校准,从eeprom获取数据