我觉得这是一个愚蠢的问题,但我似乎找不到答案。
我正在使用da14683上的led引脚来驱动显示器的背光。
我有这个代码,在我的任务中,我每5秒切换一次。背光一开始会打开,但关闭一次后,就再也不会打开了。我知道显示器每5秒就会进入或退出休眠模式(我在观察当前的消耗),但没有背光。
无论如何,我认为这是设备的睡眠模式的问题。当我设置设备为pm_set_sleep_mode(pm_mode_active);而不是extended_sleep我能够打开LED引脚与以下代码。
什么好主意吗?
空白displayPower (int ON_OFF)
{
如果(ON_OFF)
{
Static timer2_config CFG = {
傅立叶= 0,
.pwm2_end = 0,
.pwm2_start = 0,
.pwm3_end = 0,
.pwm3_start = 0,
.pwm4_end = 0,
.pwm4_start = 0,
};
hw_timer2_init (cfg);
hw_timer2_set_division_factor (HW_TIMER2_DIV_4);
hw_timer2_set_frequency (100);
hw_timer2_set_pwm_duty_cycle (HW_TIMER2_PWM_3, 127);
hw_timer2_enable ();
hw_led_set_led2_src (HW_LED_SRC2_PWM3);
hw_led_enable_led2(真正的);
//退出休眠模式
displayWriteCommand (ST7789_SLPOUT);
OS_DELAY_MS (10);
displayWriteCommand (ST7789_DISPON);
}
其他的
{
hw_led_enable_led2(假);
/ /进入睡眠模式
displayWriteCommand (ST7789_SLPIN);
OS_DELAY_MS (10);
displayWriteCommand (ST7789_DISPOFF);
}
}
嗨SamsonLeoMarch,
根据DA1468x数据表,默认的GPIO值是下拉式的。当设备进入睡眠状态时,系统将失去所有默认配置。您应该将所有配置放到peripher_init()中,以防您想要唤醒并使用扩展睡眠之前的配置。因此,所有的引脚配置都应该添加到peripher_init()中,而这应该由prvsetuhardware()执行。通过这种方式,当您醒来时,电源管理器将用以前的状态重新配置引脚。请说明你是否已经这样做了?
谢谢,PM_Dialog
是的,我有。
我昨晚发现,如果我将pm_set_sleep_mode(pm_mode_active)添加到on情况,并将pm_set_sleep_mode(pm_mode_extended_sleep)添加到off情况,设备将按照我希望的方式运行。然而,这感觉更像是创可贴,而不是真正的解决方案。
嗨SamsonLeoMarch,
很抱歉给你带来的困惑,我刚刚删除了我的答案,这是一个错误。很高兴你把问题解决了。如果您发现任何文章对其他客户有用,请注明“已接受”。如果您还有其他问题,请告诉我好吗?
谢谢,PM_Dialog
我的解决方案是解决这个问题的正确方法吗?
嗨SamsonLeoMarch,
可能gpio在休眠前没有保留配置。我不知道你在你的固件里完成了什么,但我想,是的,这是你问题的解决方案。
谢谢,PM_Dialog