TSM12M触摸按键ic测试代码

#define TSM12M_RST_IO PIO5
#define TSM12M_IIC_EN_IO PIO23


void DoorTsm12mIoInit(void)
{
DRV_PinMux_SigSet((1L << TSM12M_RST_IO), PIN_GPIO);
DRV_Gpio_DirSet((1L << TSM12M_RST_IO), PIO_OUTPUT);
DRV_Gpio_PullSet((1L << TSM12M_RST_IO), PULL_DOWN);
DRV_Gpio_ValSet((1L << TSM12M_RST_IO), PIO_LOW);
DoorTimerDelayUnitMs(10);
DRV_Gpio_ValSet((1L << TSM12M_RST_IO), PIO_HIGH);
DoorTimerDelayUnitMs(10);
DRV_Gpio_ValSet((1L << TSM12M_RST_IO), PIO_LOW);
DoorTimerDelayUnitMs(10);
printf("RESET OK!\n");


DRV_PinMux_SigSet((1L << TSM12M_IIC_EN_IO), PIN_GPIO);
DRV_Gpio_DirSet((1L << TSM12M_IIC_EN_IO), PIO_OUTPUT);
DRV_Gpio_PullSet((1L << TSM12M_IIC_EN_IO), PULL_UP);
DRV_Gpio_ValSet((1L << TSM12M_IIC_EN_IO), PIO_HIGH);
}






void DoorTsm12mIicEnable(void)
{
DRV_Gpio_ValSet((1L << TSM12M_IIC_EN_IO), PIO_LOW);
}






void DoorTsm12mIicDisable(void)
{
DRV_Gpio_ValSet((1L << TSM12M_IIC_EN_IO), PIO_HIGH);
}










#if 0
void DoorTsm12mChipInit(void)
{
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
DoorTimerDelayUnitMs(100);




//S/W RESET
iicData[0] = 0x0F;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);










//Sensitivity Set
iicData[0] = 0xBB;
iicData[1] = 0xBB;
iicData[2] = 0xBB;
iicData[3] = 0xBB;
iicData[4] = 0xBB;
iicData[5] = 0xBB;
I2cWriteBytes(TSM12M_ADDR, SENS1, 0x06, iicData);




iicData[0] = 0x33;
I2cWriteBytes(TSM12M_ADDR, CTRL1, 0x01, iicData);




iicData[0] = 0x3F;
iicData[1] = 0x01;
iicData[2] = 0x3F;
iicData[3] = 0x01;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x04, iicData);




//S/W Reset OFF
iicData[0] = 0x03;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);


DoorTsm12mIicDisable();//TSM12 I2C disable
}
#endif


















#if 0
void DoorTsm12mChipInit(void)
{
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
DoorTimerDelayUnitMs(100);




//S/W RESET
iicData[0] = 0x0F;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
printf("......111......\n");
DoorTimerDelayUnitMs(100);


/*
iicData[0] = 0x07;//Ctrl2 Setting : 0x07
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
printf("......222......\n");
DoorTimerDelayUnitMs(100);
*/




//Sensitivity Set
iicData[0] = 0xBB;
iicData[1] = 0xBB;
iicData[2] = 0xBB;
iicData[3] = 0xBB;
iicData[4] = 0xBB;
iicData[5] = 0xBB;
I2cWriteBytes(TSM12M_ADDR, SENS1, 0x06, iicData);
printf("......333......\n");
DoorTimerDelayUnitMs(100);


iicData[0] = 0x33;
I2cWriteBytes(TSM12M_ADDR, CTRL1, 0x01, iicData);
printf("......444......\n");
DoorTimerDelayUnitMs(100);


iicData[0] = 0x3F;
iicData[1] = 0x01;
iicData[2] = 0x3F;
iicData[3] = 0x01;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x04, iicData);
printf("......555......\n");
DoorTimerDelayUnitMs(100);


//S/W Reset OFF
iicData[0] = 0x03;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
printf("......666......\n");
DoorTimerDelayUnitMs(100);


DoorTsm12mIicDisable();//TSM12 I2C disable
}
#endif










void ReadAllRegValue(void)
{
U8 i;
U8 ret;
U8 iicData[32];
ret = I2cReadBytes(TSM12M_ADDR, SENS1, 17, iicData);
if(ret == 0)
{
printf("err:0x00123.........\n");
return;
}
else
{
for(i=0; i<17; i++)
{
printf("%02x:%02x \n", SENS1+i, iicData[i]);
}
}
}










/*
void ReadAllRegValue(void)
{
U8 i;
U8 ret;
U8 iicData[32];
ret = I2cReadBytes(TSM12M_ADDR, SENS1, 1, iicData);
if(ret == 0)
{
printf("err:0x00123.........\n");
return 0x00;
}
else
{
for(i=0; i<17; i++)
{
printf("%02x:%02x \n", SENS1+i, iicData[i]);
}
}
}
*/










#if 1
void DoorTsm12mChipInit(void)
{
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
DoorTimerDelayUnitMs(200);


ReadAllRegValue();
printf("......000......\n");




//S/W RESET ON
iicData[0] = 0x0F;//Ctrl2 Setting : 0x0F
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
//DoorTimerDelayUnitMs(100);
printf("......111......\n");


iicData[0] = 0x07;//Ctrl2 Setting : 0x07
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
//DoorTimerDelayUnitMs(100);
printf("......222......\n");




iicData[0] = 0xBB;//Sensitivity Setting:Ch1 ~ CH12
iicData[1] = 0xBB;
iicData[2] = 0xBB;
iicData[3] = 0xBB;
iicData[4] = 0xBB;
iicData[5] = 0xBB;




/*
iicData[0] = 0x00;//Sensitivity Setting:Ch1 ~ CH12
iicData[1] = 0x00;
iicData[2] = 0x00;
iicData[3] = 0x00;
iicData[4] = 0x00;
iicData[5] = 0x00;
*/




/*
iicData[0] = 0xFF;//Sensitivity Setting:Ch1 ~ CH12
iicData[1] = 0xFF;
iicData[2] = 0xFF;
iicData[3] = 0xFF;
iicData[4] = 0xFF;
iicData[5] = 0xFF;
*/




I2cWriteBytes(TSM12M_ADDR, SENS1, 0x06, iicData);
//DoorTimerDelayUnitMs(100);
printf("......333......\n");


//iicData[0] = 0x33;//Ctrl1 Setting
//iicData[0] = 0x3B;//Ctrl1 Setting
//iicData[0] = 0x2B;//Ctrl1 Setting
iicData[0] = 0x18;//Ctrl1 Setting
I2cWriteBytes(TSM12M_ADDR, CTRL1, 0x01, iicData);
//DoorTimerDelayUnitMs(100);
printf("......444......\n");






/*
iicData[0] = 0xFF;//Channel_Hold Off:CH1 ~ CH12
iicData[1] = 0x0F;
I2cWriteBytes(TSM12M_ADDR, CH_HOLD1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......555......\n");


iicData[0] = 0x00;//Reset Off:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......666......\n");
*/








iicData[0] = 0x00;//Reset On:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x02, iicData);
//DoorTimerDelayUnitMs(100);
printf("......777......\n");




iicData[0] = 0x00;//Channel_Hold On:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, CH_HOLD1, 0x02, iicData);
//DoorTimerDelayUnitMs(100);
printf("......888......\n");










iicData[0] = 0x03;//S/W Reset OFF
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
//DoorTimerDelayUnitMs(100);
//DoorTimerDelayUnitMs(100);
printf("......999......\n");




ReadAllRegValue();
printf("......aaa......\n");


DoorTsm12mIicDisable();//TSM12 I2C disable
}
#endif
















#if 0
void DoorTsm12mChipInit(void)
{
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable


printf("WAITING:\n");
DoorTimerDelayUnitMs(2000);
printf("all registers init value:\n");


TEST:
ReadAllRegValue();
DoorTimerDelayUnitMs(2000);
goto TEST;








//S/W RESET ON
iicData[0] = 0x09;//Ctrl2 Setting : 0x0F
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
DoorTimerDelayUnitMs(100);
printf("......111......\n");




/*
iicData[0] = 0x07;//Ctrl2 Setting : 0x07
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
DoorTimerDelayUnitMs(100);
printf("......222......\n");
*/






iicData[0] = 0x33;//Sensitivity Setting:Ch1 ~ CH12
iicData[1] = 0x33;
iicData[2] = 0x33;
iicData[3] = 0x33;
iicData[4] = 0x33;
iicData[5] = 0xbb;
I2cWriteBytes(TSM12M_ADDR, SENS1, 0x06, iicData);
DoorTimerDelayUnitMs(100);
printf("......333......\n");


iicData[0] = 0x33;//Ctrl1 Setting
I2cWriteBytes(TSM12M_ADDR, CTRL1, 0x01, iicData);
DoorTimerDelayUnitMs(100);
printf("......444......\n");






/*
iicData[0] = 0xFF;//Channel_Hold Off:CH1 ~ CH12
iicData[1] = 0x0F;
I2cWriteBytes(TSM12M_ADDR, CH_HOLD1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......555......\n");


iicData[0] = 0x00;//Reset Off:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......666......\n");
*/








iicData[0] = 0x00;//Reset On:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, REF_RST1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......777......\n");




iicData[0] = 0x00;//Channel_Hold On:CH1 ~ CH12
iicData[1] = 0x00;
I2cWriteBytes(TSM12M_ADDR, CH_HOLD1, 0x02, iicData);
DoorTimerDelayUnitMs(100);
printf("......888......\n");








/*
iicData[0] = 0x03;//S/W Reset OFF
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);
DoorTimerDelayUnitMs(100);
DoorTimerDelayUnitMs(100);
printf("......999......\n");
*/




printf("all registers setted value:\n");
ReadAllRegValue();




DoorTsm12mIicDisable();//TSM12 I2C disable
}
#endif














void DoorTsm12mNoiseState(void)
{
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
//DoorTimerDelayUnitMs(100);


//S/W RESET
iicData[0] = 0x0F;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);


//S/W Reset OFF
iicData[0] = 0x03;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);


DoorTsm12mIicDisable();//TSM12 I2C disable
}










void DoorTsm12mGoSleepMode(void)
{
U8 iicData[32];


printf("......DoorTsm12mGoSleepMode......\n");


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
//DoorTimerDelayUnitMs(100);


iicData[0] = 0x07;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);


DoorTsm12mIicDisable();//TSM12 I2C disable
}










void DoorTsm12mExitSleepMode(void)
{
U8 iicData[32];


printf("......DoorTsm12mExitSleepMode......\n");
//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
//DoorTimerDelayUnitMs(100);


iicData[0] = 0x03;
I2cWriteBytes(TSM12M_ADDR, CTRL2, 0x01, iicData);


DoorTsm12mIicDisable();//TSM12 I2C disable
}








U8 DoorTsm12mReadKey(U8 *keyValue)
{
U8 i;
U8 j;
U8 keyNum;
U8 ret;
U8 index;
U8 iicData[32];


//H/W POWER ON RESET DELAY 100mSEC
DoorTsm12mIicEnable();//TSM12 I2C Enable
DoorTimerDelayUnitMs(100);


iicData[0] = 0x00;
iicData[1] = 0x00;
iicData[2] = 0x00;
ret = I2cReadBytes(TSM12M_ADDR, OUTPUT1, 0x03, iicData);
DoorTsm12mIicDisable();//TSM12 I2C disable


if(ret == 0)
{
printf("ret:0x00.........\n");
return 0x00;
}
else
{
for(i=0; i<3; i++)
{
printf("iicData:%02x \n", iicData[i]);
}
}
printf(".................\n");
keyNum = 0x00;
index = 0x00;
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
//if((iicData[i]&0x03) >= 0x02)
//if((iicData[i]&0x03) >= 0x01)
if((iicData[i]&0x03) == 0x03)
{
keyNum++;
iicData[index++] = 1;
}
else
{
iicData[index++] = 0;
}
iicData[i] >>= 2;
}
}
return keyNum;
}


















void Tsm12mTest(void)
{
U8 keyValue[8];
DoorTsm12mIoInit();
DoorTsm12mChipInit();
begin:
DoorTsm12mReadKey(keyValue);
DoorTimerDelayUnitMs(1000);
goto begin;
}










#include "Door74Hc164.h"
#include "DoorFile.h"
#include "DoorSingleMachine.h"




#define TSM12M_PASSWD_LEN 8


static U8 Tsm12mCanReadKeyStateFlag = 1;//表示可以读键盘的状态,成功读取一次按键后要等待松开
static U8 Tsm12mTouchKeyIndex = 0x00;//跟踪密码的位置
static U8 Tsm12mTouchKeysPasswd[TSM12M_PASSWD_LEN];//保存密码


/*
const U8 Tsm12mKeyLedTab[12] =
{
9,
10,
0,
11,
8,
1,
5,
3,
2,
4,
7,
6
};
*/




const U8 Tsm12mKeyLedTab[12] =
{
10,
0,
1,
11,
9,
2,
6,
4,
3,
5,
8,
7
};


















U16 Tsm12mFormatChange(U8 *iicData)
{
U8 i;
U8 j;
U8 temp;
U8 offPos;
U16 keyScanValue;
keyScanValue = 0x0000;
offPos = 0x00;
for(i=0; i<3; i++)
{
temp = iicData[i];
for(j=0; j<4; j++)
{
if((temp&0x03) >= 0x02)
{
keyScanValue |= (1L << offPos);
}
else
{


}
temp >>= 2;
offPos++;
//keyScanValue <<= 1;
}
}
//printf("keyScanValue:%04x\n", keyScanValue);
return keyScanValue;
}








void Tsm12mTouchKeyLedBlink(U8 keyValue)
{
U8 ledNum;
ledNum = Tsm12mKeyLedTab[keyValue];
Hc164CtrlLedBlink(ledNum);
}








U8 Tsm12mBitChkCount(U16 x)
{
U8 sum = 0;
    while(x)
    {
    sum++;
        x = x&(x-1);
    }
    return sum;
}








void Tsm12mPasswordInit(void)
{
U8 i;
for(i=0; i<TSM12M_PASSWD_LEN; i++)
{
Tsm12mTouchKeysPasswd[i] = 0x00;
}
Tsm12mTouchKeyIndex = 0x00;
Tsm12mCanReadKeyStateFlag = 0;//等待按键松开
}








void Tsm12mPasswordFormatGet(U8 *src, U8 *dst)
{
U8 i;
U8 keyNum;
U8 temp[32];
for(i=0; i<TSM12M_PASSWD_LEN; i++)
{
keyNum = Tsm12mKeyLedTab[src[i]];
temp[i] = keyNum;
}
DOOR_PRINT("PASSWORD:\n");
for(i=0; i<4; i++)
{
dst[i] = (temp[i*2+0]<<4)|(temp[i*2+1]);
DOOR_PRINT("%02x", dst[i]);
}
DOOR_PRINT("\n");
}






void Tsm12mPasswordInput(void)
{
U8 i;
U8 ret;
U8 password[4];
DOOR_PRINT("TouchKeyIndex:%d\n", Tsm12mTouchKeyIndex);
for(i=0; i<Tsm12mTouchKeyIndex; i++)
{
//DOOR_PRINT("TouchKeysPasswd[%d]:%d\n", i, TouchKeysPasswd[i]);
DOOR_PRINT("TouchKeysPasswd[%d]:%d\n", i, Tsm12mKeyLedTab[Tsm12mTouchKeysPasswd[i]]);
}


if(Tsm12mTouchKeyIndex == TSM12M_PASSWD_LEN)
{
Tsm12mPasswordFormatGet(Tsm12mTouchKeysPasswd, password);




//At24C02Test();
//At24C02Test1();
//DoorTimerDelayUnitMs(2);
//At24C02Test2();




ret = FindPasswordInFile(password);
if(ret == 1)
{
VoiceOnlyTips();
PasswordOpenDoorRecord(password);


//VoiceOnlyTipsMode2();//找到了对应的密码
//DOOR_PRINT("ret1:%d\n", ret);
}
else//不合法
{
VoiceOnlyTipsMode3();
DoorPlayOneSection(0x12);//密码错误
//DOOR_PRINT("ret0:%d\n", ret);
}
}
else
{
Tsm12mPasswordInit();
return;
}
Tsm12mPasswordInit();
}










void Tsm12mPasswordPushKey(U8 keyValue)//非'#','*'键的处理
{
DoorPlayOneSection(0x30+Tsm12mKeyLedTab[keyValue]);
if(Tsm12mTouchKeyIndex >= TSM12M_PASSWD_LEN)
{
return;
}
Tsm12mTouchKeysPasswd[Tsm12mTouchKeyIndex++] = keyValue;
}








void Tsm12mPasswordPopKey(void)//'*'键的处理
{
if(Tsm12mTouchKeyIndex == 0)
{
return;
}
Tsm12mTouchKeysPasswd[Tsm12mTouchKeyIndex--] = 0x00;
}














U8 Tsm12mReadOutData(U16 *keyValueIndex)
{
U8 i;
U8 j;
U8 ret;
U8 iicData[32];


DoorTsm12mIicEnable();//TSM12 I2C Enable
//DoorTimerDelayUnitMs(100);
iicData[0] = 0x00;
iicData[1] = 0x00;
iicData[2] = 0x00;
ret = I2cReadBytes(TSM12M_ADDR, OUTPUT1, 0x03, iicData);
DoorTsm12mIicDisable();//TSM12 I2C disable


if(ret == 0)
{
printf("ret:0x00.........\n");
return 0x00;
}
else
{
for(i=0; i<3; i++)
{
//printf("iicData:%02x \n", iicData[i]);
}
}
printf(".................\n");


*keyValueIndex = Tsm12mFormatChange(iicData);
return 0x01;
}










void Tsm12mWaitForKeyUp(void)
{
U8 ret;
U16 keyValueIndex;
ret = Tsm12mReadOutData(&keyValueIndex);
if(ret == 0)
{
return;
}
if(keyValueIndex == 0x0000)
{
Tsm12mCanReadKeyStateFlag = 1;//已经松开,下次按键即可生效
Hc164CtrlLedAllOn();
}
}










U8 Tsm12mTouchFindKey(U16 readKey)
{
U8 i;
DOOR_PRINT("readKey:%x\n", readKey);
for(i=0; i<12; i++)
{
if((readKey & 0x0001) == 0x0000)
{
readKey = readKey >> 1;
continue;
}
break;//找到就跳出循环
}
DOOR_PRINT("keyValue:%d\n", i);
DOOR_PRINT("key:%d\n", Tsm12mKeyLedTab[i]);
return i;
}










void Tsm12mTouchReadKeySub(U8 keyValue)
{
if(keyValue < TSM_TOUCH_KEY_END)
{


}
else
{
return;
}
Tsm12mTouchKeyLedBlink(keyValue);
VoiceOnlyTipsMode2();
switch(keyValue)
{
case TSM_TOUCH_KEY_STAR:
Tsm12mPasswordPopKey();
break;


case TSM_TOUCH_KEY_SHARP:
Tsm12mPasswordInput();
break;


default:
Tsm12mPasswordPushKey(keyValue);
break;
}
}














void Tsm12mTouchReadKey(void)
{
U8 ret;
U16 readKey;
U8 keyValue;
ret = Tsm12mReadOutData(&readKey);
if(ret == 0)
{
return;
}
if(readKey == 0x0000)
{
return;//无键按下
}
if(Tsm12mBitChkCount(readKey) > 0x01)
{
return;//有多个键按下
}
keyValue = Tsm12mTouchFindKey(readKey);//读到有键按下
Tsm12mTouchReadKeySub(keyValue);
Tsm12mCanReadKeyStateFlag = 0;//等待按键松开
SetIdleTimerCount(0x00);//防止进入低功耗
DOOR_PRINT("TouchKeyPressChk:new!\n");
}








void Tsm12mTouchReadKeyDeal(void)
{
U8 retFlag;
retFlag = GetWakeUpFlag();
if(retFlag == 1)
{
return;//LED正在转圈
}
if(Tsm12mCanReadKeyStateFlag == 0)
{
Tsm12mWaitForKeyUp();
return;
}
Tsm12mTouchReadKey();
}








U8 GetTouchKeyChkIntFlag(void);
void ResetTouchKeyChkIntFlag(void);
void Tsm12mTouchReadKeyIntModeDeal(void)
{
U8 retFlag;


/*
if(Tsm12mCanReadKeyStateFlag == 0)
{
Tsm12mWaitForKeyUp();//检测按键是否松开
}
*/


retFlag = GetTouchKeyChkIntFlag();
if(retFlag == 1)
{


}
else
{
return;//没有检测到中断
}


retFlag = GetWakeUpFlag();
if(retFlag == 1)
{
return;//LED正在转圈
}




/*
if(Tsm12mCanReadKeyStateFlag == 0)
{
return;
}
*/




Tsm12mTouchReadKey();
ResetTouchKeyChkIntFlag();
}








void Tsm12mWaitForKeyUpIntMode(void)
{
if(Tsm12mCanReadKeyStateFlag == 0)
{
Tsm12mWaitForKeyUp();//检测按键是否松开
}
}










U8 Tsm12mTouchKeyPressChk(void)
{
U8 ret;
U16 readKey;


ret = Tsm12mReadOutData(&readKey);




/*
DoorTimerDelayUnitMs(2);
At24C02Test2();
DoorTimerDelayUnitMs(2);
ret = Tsm12mReadOutData(&readKey);
DoorTimerDelayUnitMs(2);
ret = Tsm12mReadOutData(&readKey);
DoorTimerDelayUnitMs(2);
return 0;
*/






if(ret == 0)
{
return;
}
if(readKey == 0x0000)
{
return;//无键按下
}
Tsm12mTouchFindKey(readKey);




Tsm12mCanReadKeyStateFlag = 0;//等待按键松开
Tsm12mPasswordInit();//来一次彻底的初始化
//StartWakeUpLed();//唤醒后转灯
DOOR_PRINT("TouchKeyPressChk:OK!\n");
return 0x01;//有键按下
}








#define TOUCH_KEY_CHK_IO PIO4


static U8 TouchKeyChkIntFlag = 0;






U8 GetTouchKeyChkIntFlag(void)
{
U8 retFlag;
retFlag = TouchKeyChkIntFlag;
TouchKeyChkIntFlag = 0;
return retFlag;
}






void ResetTouchKeyChkIntFlag(void)
{
TouchKeyChkIntFlag = 0;
}










static void TouchKeyChkIoIntHandler(U8 io_num)
{
TouchKeyChkIntFlag = 1;
DOOR_PRINT("io %d interrupt..................\n", io_num);
//DRV_Gpio_IntDis(io_num);
}








void TouchKeyChkIoEn(void)
{
DRV_Gpio_IntReg(TOUCH_KEY_CHK_IO, (GPIO_INTR_TYPE_ENUM)EDGE_NEG, TouchKeyChkIoIntHandler);
DRV_Gpio_IntEn(TOUCH_KEY_CHK_IO);
DRV_Gpio_DebEn(TOUCH_KEY_CHK_IO , false);
}








void TouchKeyChkIoDis(void)
{
DRV_Gpio_IntDis(TOUCH_KEY_CHK_IO);
}








void TouchKeyChkIoInit(void)
{
DRV_PinMux_SigSet((1L<<TOUCH_KEY_CHK_IO), PIN_GPIO);
DRV_Gpio_DirSet((1L<<TOUCH_KEY_CHK_IO), PIO_INPUT);
DRV_Gpio_PullSet((1L<<TOUCH_KEY_CHK_IO), PULL_UP);
}











  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值