cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

Li_Qiang
New Contributor II

我使用PSoC的Launcher模式,发现在Launcher切换到App后,在App中使用CySysGetResetReason获取WatchDog Reset原因不正确,没有发生WatchDog Reset,也依然判断发生过,判断条件是if (CY_SYS_RESET_WDT == CySysGetResetReason(CY_SYS_RESET_WDT)),去掉Launcher后就正常了,这是为什么?

 

0 Likes
1 Solution
LinglingG_46
Moderator
Moderator


这个跟工程没有关系,就是code语法的分析。
你这句话就相当于写了一个if(1&&1==1&&1),这个肯定是成立的。
因为从函数的角度出发,CySysGetResetReason(CY_SYS_RESET_WDT)和CySysGetResetReason(CY_SYS_RESET_SW))返回值是相同的为CY_SYS_RESET_SW,这两个值相与为1。 CY_SYS_RESET_WDT&&CY_SYS_RESET_SW这部分两个非0的值相与为1,所以代码每次都能执行这个条件成立的部分。

View solution in original post

0 Likes
6 Replies
LinglingG_46
Moderator
Moderator

我建了一个launcher的工程,在APP中我调用下面的逻辑,

if (CY_SYS_RESET_WDT == CySysGetResetReason(CY_SYS_RESET_WDT))
{
PWM_1_Start();
}

代码没有跳进去执行"PWM_1_Start();" ;不知道你是通过什么样的测试发现这个地方有问题的?

0 Likes
Li_Qiang
New Contributor II

sorry是我描述有问题,你能否再试一下这个if (CY_SYS_RESET_WDT&&CY_SYS_RESET_SW == CySysGetResetReason(CY_SYS_RESET_WDT)&&CySysGetResetReason(CY_SYS_RESET_SW))条件,这个在Launcher切换到App后会一直判断有,if (CY_SYS_RESET_WDT == CySysGetResetReason(CY_SYS_RESET_WDT))这个条件虽然没有判断有,但即使发生过WatchDog Reset也判断不出来。

0 Likes
LinglingG_46
Moderator
Moderator

Launcher 跳到APP的时候会调用API: CySoftwareReset();

这个你可以在static void Launcher_LaunchApplication(void)这个函数里面找到。

这样你在上面提到的if条件就成立了,理论和实验现象都是合理的。

如果像验证WDT reset的话,你可以在Laucher的code中判断。 

0 Likes
Li_Qiang
New Contributor II

我明白Launcher会有CySoftwareReset();所以我加上了CY_SYS_RESET_SW判断,但是并没有发生过WatchDog Reset,if (CY_SYS_RESET_WDT&&CY_SYS_RESET_SW == CySysGetResetReason(CY_SYS_RESET_WDT)&&CySysGetResetReason(CY_SYS_RESET_SW))这个条件依然会进入,我很困扰,你能提供一个有Launcher的例程吗?以上述的条件做判断。

0 Likes
LinglingG_46
Moderator
Moderator


这个跟工程没有关系,就是code语法的分析。
你这句话就相当于写了一个if(1&&1==1&&1),这个肯定是成立的。
因为从函数的角度出发,CySysGetResetReason(CY_SYS_RESET_WDT)和CySysGetResetReason(CY_SYS_RESET_SW))返回值是相同的为CY_SYS_RESET_SW,这两个值相与为1。 CY_SYS_RESET_WDT&&CY_SYS_RESET_SW这部分两个非0的值相与为1,所以代码每次都能执行这个条件成立的部分。

View solution in original post

0 Likes
Li_Qiang
New Contributor II

明白了,确实是这个问题,非常感谢。

0 Likes