LED闪烁,手柄处于唤醒状态

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
jbaczuk.
离线
最后一次露面:10个月前1年
加入:2014-12-31 23:41
LED闪烁,手柄处于唤醒状态

你好,

我的工作与基本套件DA14580 BLE。
船上有两个LED。使用PWM使用定时器处理器和控制强度闪烁LED。
在此之后,根据我发布的论坛的链接,我已经修改了睡眠和唤醒的代码和从按钮(GPIO Inerrupt)。
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl..。

在开发逻辑之后,睡眠和唤醒正常工作,但在修改后的睡眠代码之后,我面临以下一些问题。
1. LED闪烁HANLDER不起作用的完美,先前工作正常,闪烁一直在使用“app_easy_timer”函数的定时器处理程序。
2.我使用PWM控制强度,现在PWM行为也随机。有时它非常明亮,有时候很低。

我已经调用“app_easy_timer”函数在唤醒时创建处理程序,并调用“app_easy_timer_cancel”函数在睡眠时取消处理程序。

请问我如何解决上述问题。

谢谢

设备:
mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨jbaczuk,

嗨jbaczuk,

当您提到修改了睡眠代码时,我认为您的意思是您已启用睡眠模式。由于您启用了睡眠模式,请注意,设备将关闭所有外围设备,定时器,UART,SPI等,以便睡觉,如果您设置了计时器,则没有检查设备唤醒的任何检查或者意识到580将在进入睡眠模式时锁存设备的GPIO,这意味着它将将PIN的状态保留到睡眠前的状态。所以你所看到的是,在每次唤醒(为了宣传或保持连接),所有外围设备都被初始化并开始运营,一旦开始睡眠,PWM关闭,LED之前保持在他们的状态睡觉。因此,对于PWM来说,为了正常工作,您将必须保持设备唤醒,并且关于LED您必须将引脚的状态保持在自定义变量中,以便在设备唤醒时重新初始化到该状态(580将在睡眠时保持GPIO的状态,但在唤醒时,唤醒Periph_Init函数将运行,并将引脚重新升级在原始状态下,因此您必须将PIN状态保持在变量中并尾尾up在periph_init函数中应用此值)。

由于MT_dialog

jbaczuk.
离线
最后一次露面:10个月前1年
加入:2014-12-31 23:41
mt_dialog,

mt_dialog,

谢谢回复。对不起,我会澄清我的问题。当我第一次接通设备时,它立即使用:

arch_set_deep_sleep ();
ARCH_BLE_EXT_WAKEUP_ON();
app_button_enable();

没有使用LED,定时器或PWM。

然后,当按下按钮时,我们使用BLE_APP_SLEEPMODE示例使用代码唤醒设备:

静态void app_button_enable(void)

app_easy_wakeup_set(app_wakeup_cb);
wkupct_register_callback(app_button_press_cb);
GPIO_ConfigurePin(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN, INPUT_PULLUP, PID_GPIO, false);
wkupct_enable_irq(WKUPCT_PIN_SELECT(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN), //选择pin (GPIO_BUTTON_PORT, GPIO_BUTTON_PIN)
wkupct_pin_polarity(gpio_button_port,gpio_button_pin,wkupct_pin_polarity_low),//极性低
1,// 1事件
40);// debouncing time = 0

静态void app_wakeup_cb(void)

if(ke_state_get(task_app)== app_connectable)

user_app_adv_start();
LED_MODE模式= POWER_ON;
LED_Pattern(模式);

但是,它看起来有些事情正在干扰LED。我们有2个LED,都使用Timer2和PWM2(适用于1个LED)和PWM3(适用于另一个),而它们是骑自行车(每秒左右打开和关闭),请关闭它们(每秒约3次)。

我想知道睡眠模式是否会影响到计时器。它们只有在设备唤醒时才初始化,所以我不认为深度睡眠会导致它忘记PWM或计时器(它们在设备唤醒前不会启动)。

mt_dialog.
离线
最后一次露面:4个月2周前
职员
加入:2015-06-08 11:34
嗨jbaczuk,

嗨jbaczuk,

如上所述,当器件处于睡眠模式时(醒来并跌倒以睡眠以便仅服务于BLE事件),580将关闭其所有外围设备。因此,为了使PWM和计时器没有中断,在唤醒和睡眠过程中,您将不得不在计时器运行时禁用睡眠(您可以使用ARCH_DISABLE_SLEEP()在运行时执行此操作。这将保持设备唤醒以及在PWM模式下工作的定时器。完成后,您可以通过ARCH_SET_DEEP_SLEEP()或ARCH_SET_EXTEDDE_SLEEP()重新启用休眠模式。

由于MT_dialog