你看到的现象并不是真正的原因,我可以确认
M0+ 是否进入深睡眠不会影响 M4核执行 CapSense 和 LED 操作。
比如用你的工程(使能 M0+核深睡眠),把 compile 模式从 DEBUG 改为 RELEASE, 或者使用 MDK 编译器(DEBUG 和RELEASE 都可以),你会发现触摸时可以工作的。再比如说 main_cm4.c 中的打印信息稍微改一下(如下代码),触摸也可以回复正常。
capSenseApiResult = CapSense_Start();
if (capSenseApiResult== CY_RET_SUCCESS)
{
DEBUG_PRINTF("CAPSENSE INIT PASSrn");
}
else
{
DEBUG_PRINTF("CAPSENSE INIT FAILrn");
}
while(1)
我解释不了这个现象,可能是你当前的代码在编译过程中正好触发了 gcc 编译器的某个 bug,导致代码没有正常执行,因为用你的原始工程(使能 M0+核深睡眠),我在 while(1) 循环里闪灯,我发现灯根本就不闪动,也就是 while(1)主循环根本就没执行。
你看到的现象并不是真正的原因,我可以确认M0+ 是否进入深睡眠不会影响 M4核执行 CapSense 和 LED 操作。
比如用你的工程(使能 M0+核深睡眠),把 compile 模式从 DEBUG 改为 RELEASE, 或者使用 MDK 编译器(DEBUG 和RELEASE 都可以),你会发现触摸时可以工作的。再比如说 main_cm4.c 中的打印信息稍微改一下(如下代码),触摸也可以回复正常。
capSenseApiResult = CapSense_Start();
if (capSenseApiResult== CY_RET_SUCCESS)
{
DEBUG_PRINTF("CAPSENSE INIT PASSrn");
}
else
{
DEBUG_PRINTF("CAPSENSE INIT FAILrn");
}
while(1)
我解释不了这个现象,可能是你当前的代码在编译过程中正好触发了 gcc 编译器的某个 bug,导致代码没有正常执行,因为用你的原始工程(使能 M0+核深睡眠),我在 while(1) 循环里闪灯,我发现灯根本就不闪动,也就是 while(1)主循环根本就没执行。
举报