CH582M使用ADC转换导致触摸功能失效

在Touch_Key_with_ble例程里,改成4个触摸通道,只要执行ADC转换就无法使用触摸功能,还请解答一下如和兼容adc功能与触摸功能?

Touch_Key_with_ble例程改动如下:


app_tmos.c

static?void?peripherals_EnterSleep(void)
{
????/*You?code?here*/
????GPIOA_ModeCfg(GPIO_Pin_12,?GPIO_ModeIN_Floating);
????ADC_ExtSingleChSampInit(?SampleFreq_3_2,?ADC_PGA_0?);
????ADC_ChannelCfg(?CH_EXTIN_2?);
????printf("adc_value:%d\n",ADC_ExcutSingleConver());
}

部分串口打印输出如下:

0008,0022,0003,0010,
3522,3237,3289,3304,
3479,3217,3297,3350,

0007,0016,0002,0010,
3522,3237,3289,3304,
3539,3183,3298,3272,

Ready?to?sleep
adc_value:4
0009,0016,0001,0007,
3522,3237,3289,3304,
3503,3269,3302,3317,

wake?up...
wake?up?for?a?while
0164,0105,0106,0114,
3521,3236,3288,3303,
2829,2829,2829,2829,

0690,0406,0457,0472,
3521,3236,3288,3303,
2829,2829,2829,2829,

0689,0404,0456,0471,
3521,3236,3288,3303,
2832,2832,2832,2832,

实际测试,在touch_ScanEnterSleep之前,touch都能正常工作,一旦执行ADC转换就无法触摸。

peripherals_EnterSleep中进行ADC转换之前在touch_ScanEnterSleep中已经执行了TKY_SaveAndStop();应该不会出现冲突才对啊,请问如何兼容ADC与touch事件呢?

使用EVT的例程,采集数据的时候配置初始化ADC即可。

使用睡眠功能,直接开启HAL_SLEEP。


睡眠功能不用管,我的意思是在PeriodicDealData触摸休眠状态处理时当唤醒态转休眠时会执行peripherals_EnterSleep,此时在peripherals_EnterSleep函数内执行ADC转换会造成触摸功能失效。

peripherals_EnterSleep里采集ADC数据,如果只配置初始化ADC ,那么如何得到ADC转换的数据呢?


只有登录才能回复,可以选择微信账号登录