初级会员

- 积分
- 129
- 金钱
- 129
- 注册时间
- 2015-8-8
- 在线时间
- 34 小时
|
1金钱
本帖最后由 刘飞月 于 2016-10-12 12:16 编辑
//保存在EEPROM里面的地址区间基址,占用14个字节(RANGE:SAVE_ADDR_BASE~SAVE_ADDR_BASE+13)
#define SAVE_ADDR_BASE 40
//保存校准参数
void TP_Save_Adjdata(void)
{
AT24CXX_Write(SAVE_ADDR_BASE,(u8*)&tp_dev.xfac,14); //强制保存&tp_dev.xfac地址开始的14个字节数据,即保存到tp_dev.touchtype
AT24CXX_WriteOneByte(SAVE_ADDR_BASE+14,0X0A); //在最后,写0X0A标记校准过了
}
上面的函数中是说保存14个字节
但是在
//触摸屏控制器
typedef struct
{
u8 (*init)(void); //初始化触摸屏控制器
u8 (*scan)(u8); //扫描触摸屏.0,屏幕扫描;1,物理坐标;
void (*adjust)(void); //触摸屏校准
u16 x[CT_MAX_TOUCH]; //当前坐标
u16 y[CT_MAX_TOUCH]; //电容屏有最多5组坐标,电阻屏则用x[0],y[0]代表:此次扫描时,触屏的坐标,用
//x[4],y[4]存储第一次按下时的坐标.
u8 sta; //笔的状态
//b7:按下1/松开0;
//b6:0,没有按键按下;1,有按键按下.
//b5:保留
//b4~b0:电容触摸屏按下的点数(0,表示未按下,1表示按下)
/////////////////////触摸屏校准参数(电容屏不需要校准)//////////////////////
float xfac;
float yfac;
short xoff;
short yoff;
//新增的参数,当触摸屏的左右上下完全颠倒时需要用到.
//b0:0,竖屏(适合左右为X坐标,上下为Y坐标的TP)
// 1,横屏(适合左右为Y坐标,上下为X坐标的TP)
//b1~6:保留.
//b7:0,电阻屏
// 1,电容屏
u8 touchtype;
}_m_tp_dev;
这个的定义里面
从xfac到touchtype仅仅只有4+4+2+2+1=13个字节。
这样不是越界了吗?
|
最佳答案
查看完整内容[请看2#楼]
实际上,只需要保存这部分就行了:
float xfac;
float yfac;
short xoff;
short yoff;
所以,最低要求12个字节都够
|