禁用LED引脚一次后不能使其启用

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
6个员额/ 0个新员额
最后发表
SamsonLeoMarch
离线
最后看到:2年5个月前
加入:2018-10-17 17:57
禁用LED引脚一次后不能使其启用

我觉得这是一个愚蠢的问题,但我似乎找不到答案。

我正在使用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);


设备:
PM_Dialog
离线
最后看到:4天14小时前
工作人员
加入:2018-02-08 11:03
嗨SamsonLeoMarch,

嗨SamsonLeoMarch,

根据DA1468x数据表,默认的GPIO值是下拉式的。当设备进入睡眠状态时,系统将失去所有默认配置。您应该将所有配置放到peripher_init()中,以防您想要唤醒并使用扩展睡眠之前的配置。因此,所有的引脚配置都应该添加到peripher_init()中,而这应该由prvsetuhardware()执行。通过这种方式,当您醒来时,电源管理器将用以前的状态重新配置引脚。请说明你是否已经这样做了?

谢谢,PM_Dialog

SamsonLeoMarch
离线
最后看到:2年5个月前
加入:2018-10-17 17:57
是的,我有。

是的,我有。

我昨晚发现,如果我将pm_set_sleep_mode(pm_mode_active)添加到on情况,并将pm_set_sleep_mode(pm_mode_extended_sleep)添加到off情况,设备将按照我希望的方式运行。然而,这感觉更像是创可贴,而不是真正的解决方案。

PM_Dialog
离线
最后看到:4天14小时前
工作人员
加入:2018-02-08 11:03
嗨SamsonLeoMarch,

嗨SamsonLeoMarch,

很抱歉给你带来的困惑,我刚刚删除了我的答案,这是一个错误。很高兴你把问题解决了。如果您发现任何文章对其他客户有用,请注明“已接受”。如果您还有其他问题,请告诉我好吗?

谢谢,PM_Dialog

SamsonLeoMarch
离线
最后看到:2年5个月前
加入:2018-10-17 17:57
我的解是正确的吗

我的解决方案是解决这个问题的正确方法吗?

PM_Dialog
离线
最后看到:4天14小时前
工作人员
加入:2018-02-08 11:03
嗨SamsonLeoMarch,

嗨SamsonLeoMarch,

可能gpio在休眠前没有保留配置。我不知道你在你的固件里完成了什么,但我想,是的,这是你问题的解决方案。

谢谢,PM_Dialog