我觉得这是个愚蠢的问题,但我似乎找不到答案。
我正在使用da14683上的led引脚驱动显示器的背光。
我有这个代码,在我的任务中,我每5秒就在开和关之间切换。背光最初会通电,但禁用一次后,将不再通电。我知道显示器每5秒会进入或退出睡眠模式(我正在观察当前消耗),但没有背光。
值得一提的是,我认为这是设备睡眠模式的问题。当我将设备设置为pm_set_sleep_mode(pm_mode_active)时;不用延长睡眠时间,我可以用下面的代码重新打开LED引脚。
有什么想法吗?
无效显示电源(int ON\U OFF)
{
如果(开/关)
{
静态计时器2\u配置cfg={
.频率=0,
.pwm2_end=0,
.pwm2_start=0,
.pwm3_end=0,
.pwm3_开始=0,
.pwm4_end=0,
.pwm4_start=0,
};
hw_timer2_init(&cfg);
hw_timer2_set_division_factor(hw_timer2_DIV_4);
硬件定时器2设置频率(100);
硬件定时器2设置pwm占空比(硬件定时器2 pwm 3,127);
hw_timer2_enable();
hw_led_set_led2_src(hw_led_SRC2_PWM3);
hw_led_enable_led 2(真);
//脱离睡眠模式
显示写命令(ST7789_SLPOUT);
操作系统延迟毫秒(10);
显示写命令(ST7789_DISPON);
}
其他的
{
hw_led_enable_led 2(假);
//进入睡眠模式
显示写命令(ST7789slpin);
操作系统延迟毫秒(10);
显示写命令(ST7789_disoff);
}
}
设备:
嗨,SamsonLeoMarch,
根据DA1468x数据表,默认GPIO值为下拉。当设备进入睡眠状态时,系统将丢失所有默认配置。您应该将所有配置放入periph_init()中如果您想唤醒并拥有扩展睡眠之前的配置,那么所有的管脚配置都应该添加到periph_init()中,该配置应该由prvSetupHardware()执行。这样,当您醒来时,电源管理器将使用以前的状态重新配置管脚。请您指出您是否已经这样做了?
谢谢,下午好
我有,是的。
我昨晚发现,如果我把pm_set_sleep_mode(pm_mode_active)添加到打开的情况下,把pm_set_sleep_mode(pm_mode_extended_sleep)添加到关闭的情况下,设备就会按照我的意愿运行。然而,这感觉像是一个绷带,而不是一个真正的修复。
嗨,SamsonLeoMarch,
抱歉,我刚刚删除了我的答案,这是一个错误。很高兴你解决了你的问题。如果你发现任何对其他客户有用的帖子,请将其标记为“已接受”。如果你有任何其他问题,请告诉我?
谢谢,下午好
我的解决方案是正确的方法吗?
嗨,SamsonLeoMarch,
可能gpio在睡眠前没有保留配置。我不知道您在固件中完成了什么,但我想,是的,这是您问题的解决方案。
谢谢,下午好