当DA14583进入睡眠模式时,LED不会保持在

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
Idarshan.
离线
最后一次露面:1年5个月前
加入:2017-05-24 49
当DA14583进入睡眠模式时,LED不会保持在

我正在使用ble_all_in_one示例并为我的功能进行修改。我在set_pad_function()中配置LED GPIO,并尝试在Button_Press_callback中制作GPIO。所以用例是按下按钮时打开LED。现在LED开启,但它在第二次的一小部分中。我不是在代码中转动LED,但似乎DA14583睡觉,由于LED关闭。即使DA14583睡觉,如何使LED保持终止?以下是来自BLE_ALL_IN_ONE示例代码的MODFIED代码:

//在user_periph_setup.c.中
void set_pad_functions(void)//设置GPIO端口功能模式
{
// ...其他现有代码
gpio_configurepin(gpio_red_led_port,gpio_red_led_pin,输出,pid_gpio,false);
gpio_configurepin(gpio_green_led_port,gpio_green_led_pin,输出,pid_gpio,false);
gpio_configurepin(gpio_blue_led_port,gpio_blue_led_pin,输出,pid_gpio,false);
}

//在user_all_in_one.c.中
静态孔隙app_button_press_cb(空白)
{
如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
{
periph_init();
}

if(arch_ble_ext_wakeup_get()))
{
ARCH_SET_SLEEP_MODE(app_default_sleep_mode);
arch_ble_force_wakeup ();
ARCH_BLE_EXT_WAKEUP_OFF();
app_easy_wakeup ();
}

gpio_setactive(gpio_green_led_port,gpio_green_led_pin);//由我添加
}

请让我知道我在这做了什么吗?

感谢你的帮助。

设备:
PM_DIALOG.
离线
最后一次露面:1周3天前
职员
加入:2018-02-08 11:03
伊索斯,

伊索斯,

你能试着描述一下你想要完成的东西吗?如果我理解正确,您想在DA14580开始广告时打开LED,并且设备应该转到睡眠模式并关闭LED的定时器到期时?如果我误解了什么,请纠正我。如果您意味着可能的解决方案将是以下内容:

  • 在user_periph_setup.c:gpio_configurepin(gpio_led_port,gpio_led_pin,输出,pid_gpio,true);
  • 添加gpio_setinactive(gpio_led_port,gpio_led_pin);在avd_data_update_timer_cb中

请尝试这个,如果你有任何问题,让我知道。

谢谢,PM_DIALOG.

Idarshan.
离线
最后一次露面:1年5个月前
加入:2017-05-24 49
我想打开LED

我想在我第一次按下按钮的时候打开LED,在我再次按下按钮的时候关闭LED。现在,按下按钮后,LED打开,但然后它自动关闭DA14583进入睡眠。我想让LED一直亮着,即使DA14583睡着了。我希望你们现在理解了问题陈述。如果您需要更详细的说明,请告诉我。

PM_DIALOG.
离线
最后一次露面:1周3天前
职员
加入:2018-02-08 11:03
伊索斯,

伊索斯,

当您进入睡眠模式时,设备会保留PIN状态,因此在您处于睡眠模式时,LED应保持开启,但在唤醒设备时,设备将运行Periph_init()函数,并且当执行该部分时,它也会执行该部分以默认状态重新配置引脚。因此,为了让LED一直亮着,你必须在唤醒时“记住”引脚的状态,而当peripher_init()函数执行时,你必须在它休眠时重新应用引脚的值。我告诉你一些澄清的事情。在SDK的BLE_APP_ALL_IN_ONE示例中,设备启动广告以获得10秒的预定义的时间(app_adv_data_update_to)。在定时器到期时,设备停止广告并进入深度睡眠模式。这意味着所有外围设备都会关闭,您可以从唤醒控制器唤醒。根据您的描述,您想在设备广告时打开/ LED?请注意,DA14583将在广告或连接间隔之间转到睡眠模式。您发布到初始帖子中的代码片段将在设备从永久睡眠模式唤醒时打开LED。

谢谢,PM_DIALOG.

Idarshan.
离线
最后一次露面:1年5个月前
加入:2017-05-24 49
谢谢你的回复。一世

谢谢你的回复。我想你误解了我的用途。我不想在广告开始/停止时打开/关闭LED。我的用例与广告无关。我想在按下按钮的时候打开LED,保持LED亮着直到按下按钮。当用户松开按钮时,关闭LED。我希望这能澄清我的用例。

所以你在这个帖子上的最后一个回复并不能解决我的用例的问题。你能给出正确的解决办法吗?

PM_DIALOG.
离线
最后一次露面:1周3天前
职员
加入:2018-02-08 11:03
伊索斯,

伊索斯,

在user_all_in_one.c文件中,您应该执行以下修改:

  1. 将全局变量添加到保留RAM中。如果LED打开或关闭,则此标志将通知应用程序。

Bool LED_FLAG__ATtribute __((部分(“RETENT_MEM_AREA0”),ZERO_INIT));// @retention内存

  1. 将以下代码片段添加到app_button_press_cb()中

LED_FLAG =!LED_FLAG;

如果(LED_FLAG == TRUE)

{

gpio_setactive(gpio_led_port,gpio_led_pin);

}

否则if(led_flag == false)

{

gpio_setinactive(gpio_led_port,gpio_led_pin);

}

app_button_enable();

  1. 在user_app_adv_start()和user_app_init()调用app_button_enable()函数以启用按钮。

在user_periph_setup.c文件中:

  1. Extern bool led_flag;
  2. 在set_pad_functions()中修改LED配置如下:

GPIO_ConfigurePin(GPIO_LED_PORT, GPIO_LED_PIN, OUTPUT, PID_GPIO, led_flag);

设备开始做广告,然后在广告间隙进入睡眠状态。因此,每次设备醒来时,BLE_WAKEUP_LP_Handler都会被执行,如果检查这个处理程序,就会触发外围init()函数。因此,为了让LED一直亮着,你必须在唤醒时“记住”引脚的状态,而当peripher_init()函数执行时,你必须在它休眠时重新应用引脚的值。

谢谢,PM_DIALOG.