CH592 下电模式唤醒时间问题

因为我的项目对时间要求比较高,综合了一下最近的测试结果,想请问官方两个问题:

先是场景:

我的唤醒IO口是B12,B14,上升沿触发,如下:

    GPIOB_ModeCfg(1<<12, GPIO_ModeIN_PD);
    GPIOB_ITModeCfg(1<<12, GPIO_ITMode_RiseEdge);
    //唤醒 WUK
    GPIOB_ModeCfg(1<<14, GPIO_ModeIN_PD);
    GPIOB_ITModeCfg(1<<14, GPIO_ITMode_RiseEdge);
    PFIC_EnableIRQ(GPIO_B_IRQn);

    PWR_PeriphWakeUpCfg(ENABLE, RB_SLP_GPIO_WAKE, Short_Delay);

设置睡眠时我是否可以关掉B12的中断,这里没有找到关单个pin的函数?


问题1:我在LowPower_Shutdown(0)函数前判断了B12,B14的电平,确保不在唤醒状态。但因为我不确保B12、B14何时中断,看论坛里的帖子,如果无法正确睡眠,会进入idle模式?


问题2:之前使用的时Long_Delay参数,有时候会无法响应,这里改成Short_Delay,效果会好很多。对这个参数不是很理解,库里只有01,00选项,为了安全我是否可以设置到10?Tsuclk和1个周期,大概是多少?对PCB和晶振是否会有一定的要求?

1.png

引脚中断使能位:

image.png

GPIO中断唤醒是主动触发的。

进入idle是因为唤醒之后准备再次睡眠,但是唤醒GPIO的状态不是悬空的。遇到此情况可以将GPIO的唤醒方式修改为相反。例如上升沿唤醒,唤醒后PB12一直接在vcc引脚上,则需要再进入中断服务的时候将触发方式修改为下降沿。这样可以正确进入睡眠。

建议用longdelay,使用shortdelay唤醒后的代码需要再RAM中运行因此不建议此方式。

longdelay唤醒是一定会响应的,可以使用PM例程测试。


shortdelay不能保证一定会响应吗?



确保唤醒之后的所有代码都放在RAM中运行。建议使用longdelay。


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