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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
Idarshan.
离线
最后一次露面:1年4个月前
加入:2017-05-24 12: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.中
静态void app_button_press_cb(void)
{
if(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.
离线
最后一次露面:2周16小时前
职员
加入: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年4个月前
加入:2017-05-24 12:49
我想打开LED

当我第一次按下按钮时打开LED并再次按下按钮时关闭LED。现在,按钮按下,LED开启,但随后它自动关闭,因为DA14583睡觉。即使DA14583睡觉,我也希望保持LED。我希望你现在明白问题陈述。如果您想要更多的阐述,请告诉我。

PM_DIALOG.
离线
最后一次露面:2周16小时前
职员
加入:2018-02-08 11:03
伊索斯,

伊索斯,

当您进入睡眠模式时,设备会保留PIN状态,因此在您处于睡眠模式时,LED应保持开启,但在唤醒设备时,设备将运行Periph_init()函数,并且当执行该部分时,它也会执行该部分以默认状态重新配置引脚。因此,为了始终保持LED,您必须在醒来时“记住”引脚的状态,并且当PeripH_Init()函数执行时,您必须重新应用PIN的值睡眠。我告诉你一些澄清的事情。在SDK的BLE_APP_ALL_IN_ONE示例中,设备启动广告以获得10秒的预定义的时间(app_adv_data_update_to)。在定时器到期时,设备停止广告并进入深度睡眠模式。这意味着所有外围设备都会关闭,您可以从唤醒控制器唤醒。根据您的描述,您想在设备广告时打开/ LED?请注意,DA14583将在广告或连接间隔之间转到睡眠模式。 The code snippet that you have posted into your initial post, will turn on the led when the device wake up from the permanent sleep mode.

谢谢,PM_DIALOG.

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

感谢您的回复。我认为你误解了我的usecase。我不想在广告开始/停止上打开/关闭LED开/关。我的用例与广告无关。按下按钮时,我想打开LED,保持LED直到按下按钮。用户释放按钮时,请关闭LED。我希望这可以澄清我的用例。

因此,您对此线程的最后一个响应不会解决我的usecase的问题。你能给出正确的解决方案吗?

PM_DIALOG.
离线
最后一次露面:2周16小时前
职员
加入: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,输出,PID_GPIO,LED_FLAG);

该设备启动广告,它在广告间隔之间睡眠。因此,每次设备唤醒时,将执行BLE_WAKEUP_LP_HANDLLer,如果您检查此致电触发PERIPH_INIT()函数。因此,为了始终保持LED,您必须在醒来时“记住”引脚的状态,并且当PeripH_Init()函数执行时,您必须重新应用PIN的值睡眠。

谢谢,PM_DIALOG.