系统在唤醒时卡住,其他按钮都不起作用

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support。我们将在未来几天修复bug /优化搜索和标记。
4个职位/ 0个新
最后发表
mahmed106
离线
最后看到:2周4天前
加入:2019-05-03所
系统在唤醒时卡住,其他按钮都不起作用

嗨对话框

我在基于DA14681的定制板上工作。我使用gpio上的两个按钮来执行一些任务,它们工作得很完美。

然后我使用一个GPIO,它直接连接到USB电源。当USB连接这个GPIO高,我做一个特定的任务,这也是工作完美。

问题是我正在使用休眠模式,我正在使用这个USB电源GPIO作为唤醒目的。当处于休眠模式时,只要我插入USB,它就会唤醒并完美工作,但其他两个按钮停止工作,然后USB被移除,然后这两个按钮又开始工作。我无法理解这个问题。

下面是main.c中的代码

pm_system_init (periph_init);

hw_wkup_init(空);
hw_wkup_configure_pin (DIS_BUTTON_PORT DIS_BUTTON_PIN,真的,HW_WKUP_PIN_STATE_HIGH);/ /按钮1
hw_wkup_configure_pin (PWR_BUTTON_PORT PWR_BUTTON_PIN,真的,HW_WKUP_PIN_STATE_HIGH);/ /按钮2

hw_wkup_configure_pin(HW_GPIO_PORT_4, HW_GPIO_PIN_0, true, HW_WKUP_PIN_STATE_HIGH);//唤醒usb连接

hw_wkup_set_debounce_time (10);
hw_wkup_set_counter_threshold (1);
hw_wkup_register_interrupt (wkup_cb, 1);

设备:
PM_Dialog
离线
最后看到:14小时19分钟前
工作人员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

请说明一下,是否有在外围初始化(函数)中配置的按钮?我猜你的设备是靠电池供电的,对吗?

谢谢,PM_Dialog

mahmed106
离线
最后看到:2周4天前
加入:2019-05-03所
是的,设备通过

是的,设备通过电池供电,这是我的外围初始化功能,我定义了按钮,但没有定义usb连接gpio。

静态孔隙periph_init(空白)
{
#if 1 //定义CONFIG_RETARGET
/ *
* JLink模拟串口的解决方案。
*
* JLink串口不设置其输出UART引脚高(UART空闲状态),除非
有东西从PC传输到主板。
*板复位后,电平切换器保持低引脚状态。
*配置引脚为UART_RX不打开拉起电阻,因此RX线保持低
*,此状态通常被检测为中断条件。
*低状态下的UART RX,配置UART是不成功的:波特率
*设置UART进入忙碌状态,所有其他设置被忽略。
*
*工作区设置引脚,将作为UART RX输出与高状态。
*这将导致电平转换保持这个状态,直到JLink开始驱动这个
*传输线路。
* /

#如果OLD_HARDWARE
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_0、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_UART_TX);
#else //同样适用于干燥和液体
REG_SET_BIT (CRG_PER USBPAD_REG USBPAD_EN);
hw_gpio_set_pin_function (HW_GPIO_PORT_2 HW_GPIO_PIN_2、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_UART_TX);
# endif
// hw_gpio_set_pin_function(HW_GPIO_PORT_2, HW_GPIO_PIN_2, HW_GPIO_MODE_OUTPUT,
/ / HW_GPIO_FUNC_UART_RX);
# endif


hw_gpio_configure_pin (HW_GPIO_PORT_2 HW_GPIO_PIN_3、HW_GPIO_MODE_INPUT_PULLUP HW_GPIO_FUNC_GPIO, 1);
//hw_gpio_configure_pin(HW_GPIO_PORT_2, HW_GPIO_PIN_3, HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_GPIO, 1);
hw_gpio_set_pin_function (HW_GPIO_PORT_1 HW_GPIO_PIN_5、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_UART2_TX);
hw_gpio_set_pin_function (HW_GPIO_PORT_2 HW_GPIO_PIN_3、HW_GPIO_MODE_INPUT_PULLUP HW_GPIO_FUNC_UART2_RX);

hw_gpio_configure_pin(BUZZ_PORT, BUZZ_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
hw_gpio_configure_pin(THM_PWR_PORT, THM_PWR_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
//hw_gpio_configure_pin(PELT_PORT, PELT_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
//hw_gpio_configure_pin(INFAN_PORT,INFAN_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
hw_gpio_configure_pin(TH1_PORT, TH1_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
hw_gpio_configure_pin(TH2_PORT, TH2_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);
hw_gpio_configure_pin(TH3_PORT, TH3_PIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO, 0);

hw_gpio_configure_pin (PWR_BUTTON_PORT PWR_BUTTON_PIN、HW_GPIO_MODE_INPUT_PULLDOWN HW_GPIO_FUNC_GPIO, 0);
hw_gpio_configure_pin (DIS_BUTTON_PORT DIS_BUTTON_PIN、HW_GPIO_MODE_INPUT_PULLDOWN HW_GPIO_FUNC_GPIO, 0);

hw_gpio_configure_pin (HW_GPIO_PORT_3 HW_GPIO_PIN_7、HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_GPIO, 1);/ / 3.3 v

}

PM_Dialog
离线
最后看到:14小时19分钟前
工作人员
加入:2018-02-08 11:03
嗨mahmed106,

嗨mahmed106,

这有点奇怪,因为一旦设备从休眠中醒来,它就像一个冷启动和外围的init()配置将被执行。你能不能试着用一个逻辑分析仪跟踪与按钮连接的gpio,以便了解它是硬件还是软件相关的问题?

谢谢,PM_Dialog