|
发表于 2024-5-8 21:39:22
|
显示全部楼层
请问以下程序为什么不能唤醒?时钟6Mhz,触摸按键能正常工作,未触摸TSDAT=31000,触摸约23000,阈值取28000,未开中断。
但进入休眠后无法唤醒,只用TK3,阈值TSTH03H、TSTH03L无论设28000还是大0xff00、小0x0010都无法唤醒。
程序如下:
else{ //熄灯超过10S,开始进入休眠
//进入休眠的触摸按键操作
P_SW2 |= 0x80; //允许访问XFR
// IRC32KCR = 0x80; //启动内部32K晶振.
TSCTRL &= 0x73; //暂停扫描
px=&TSTH03H;
*px=WakeupVal; //设置休眠状态触摸按键唤醒比较阈值,阈值=未触摸值-差值/2
TSCHEN1 = 1<<3; //只启用TK3 P13触摸按键
TSCHEN2 = 0x00;
TSWUTC = 12; //100ms唤醒一次
TSCTRL |= 0x0c; //开始进入睡眠, B7: TSGO, B6: SINGLE, B5: TSWAIT, B4: TSWUCS, B3: TSDCEN, B2: TSWUEN, B1 B0: TSSAMP
//MCU进入掉电模式
PCON |= PD;
//此处是休眠醒来处
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
delay_ms(5);
printf("Wake Up! \r\n");
// TSCTRL &= 0x7f; //暂停扫描
// delay_ms(2);
// TSCTRL &= 0xf3; //关闭触摸门槛
TSCTRL = 0x80; //开始扫描
}
|
|