我觉得这是一个愚蠢的问题,但我似乎无法找到答案。
我正在DA14683上使用LED引脚来驱动显示器的背光。
我有这段代码,在我的任务中,我每5秒就在开启和休止之间切换。背光将最初向上电,但在被禁用后,它永远不会再打开。我知道显示器每隔5秒钟进出睡眠模式(我正在观看当前消耗),但没有背光。
对于它的价值,我认为这是设备上睡眠模式的问题。当我将设备设置为pm_set_sleep_mode时(pm_mode_active);而不是Extended_sleep我能够使用以下代码重新打开LED引脚。
有任何想法吗?
void显示屏(int on_off)
{
如果(on_off)
{
静态Timer2_Config CFG = {
.frequency = 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(false);
//进入睡眠模式
displaywritecommand(st7789_slpin);
os_delay_ms(10);
displaywritecommand(st7789_dispoff);
}
}

嗨Samsonleomarch,
根据DA1468X数据表,默认的GPIO值是下拉。当设备进入睡眠时,系统会丢失所有默认配置。您应该将所有配置放入Periph_init()以防您想要唤醒并在延长睡眠前进行配置。因此,应将所有引脚配置添加到Periph_init()中,该Periph_init()应由prvsetuphardware()执行。通过这种方式,当您醒来时,Power Manager将使用先前状态重新配置引脚。请问你是否已经完成了这个?
谢谢,PM_DIALOG.
我有,是的。
我昨晚发现,如果我将pm_set_sleep_mode(pm_mode_active)添加到上的情况下,而pm_set_sleep_mode(pm_mode_extendding_sleep)到关闭案例,则设备按照我想要的操作进行操作。然而,这感觉就像一个绑带而不是真正的修复。
嗨Samsonleomarch,
为混乱道歉,我刚刚删除了我的答案,这是错误的。很高兴你识上你的问题。如果您发现任何对其他客户有用的帖子,请将其标记为“已接受”。如果您有任何其他问题/问题,请您告诉我吗?
谢谢,PM_DIALOG.
我的解决方案是否正确接近这个?
嗨Samsonleomarch,
可能在睡眠前没有保留GPIO。我不知道你在固件中完成了什么,但我想,是的,这是一个解决问题的解决方案。
谢谢,PM_DIALOG.