你好
我正在使用da14695控制器,带有扩展和休眠睡眠模式。
我想用2 gpios唤醒设备,用于延长和休眠
hw_gpio_set_pin_function (ACCEL_INT_PORT ACCEL_INT_PIN、HW_GPIO_MODE_INPUT_PULLDOWN HW_GPIO_FUNC_GPIO);
空白wkup_init(空白)
{
hw_wkup_init(空);
/*
*设置跳弹时间,单位为ms,最大允许值为63 ms。
*值设置为0禁用退弹功能。
*/
hw_wkup_set_debounce_time (10);
/*
*启用由唤醒控制器的KEY块产生的中断
*电路),并注册一个回调函数,以按下一个KEY事件。
*/
hw_wkup_register_key_interrupt (acceleroIntrrupt_cb, 1);
/*
*设置触发WKUP控制器的极性(上升/下降边缘)。
*
控制器的KEY和GPIO块都有极性
*
*/
hw_wkup_configure_pin(ACCEL_INT_PORT, ACCEL_INT_PIN, 1, HW_WKUP_PIN_STATE_HIGH);// 0->上升边:1下降边1 ->板;0 - >维生素
/*
*添加一个PDC LUT条目,以便在PORT0上发生事件后唤醒M33核心
*这是重要的,因为M33是关闭时,设备进入睡眠。
*/
hw_wkup_enable_irq ();
}
这个关键唤醒是按照预期工作,设备正在从延长和休眠中醒来。
但
hw_gpio_set_pin_function (ACCEL_INT_PORT ACCEL_INT_PIN、HW_GPIO_MODE_INPUT_PULLDOWN HW_GPIO_FUNC_GPIO);
空白wkup_init(空白)
{
hw_wkup_init(空);
/*
*添加一个PDC LUT条目,以便在PORT0上发生事件后唤醒M33核心
*这是重要的,因为M33是关闭时,设备进入睡眠。
*/
hw_wkup_gpio_configure_pin (ACCEL_INT_PORT ACCEL_INT_PIN 1, HW_WKUP_PIN_STATE_HIGH);
pdc_wkup_gpio_id = hw_pdc_add_entry(HW_PDC_LUT_ENTRY_VAL(ACCEL_INT_PORT, ACCEL_INT_PIN, hw_pdc_master_cm33,0));
OS_ASSERT (pdc_wkup_gpio_id ! = HW_PDC_INVALID_LUT_INDEX);
/*
*通过SW触发PDC LUT入口。这个动作保证PD_SYS . sys
*电源域保持打开,以防应用程序无效所有其他
*激活PDC入口,保持M33活着。
*/
hw_pdc_set_pending (pdc_wkup_gpio_id);
/*
*建议确认新创建(并激活)的PDC入口
*虽然不是严格需要,因为M33将自动确认
*所有M33挂起的PDC条目在它下次尝试进入sleep之前。
*/
hw_pdc_acknowledge (pdc_wkup_gpio_id);
hw_wkup_register_gpio_p1_interrupt (acceleroIntrrupt_cb 2);
hw_wkup_enable_irq ();
}
空白acceleroIntrrupt_cb(空白)
{
状态= hw_wkup_get_status (HW_GPIO_PORT_1);
hw_wkup_clear_status (HW_GPIO_PORT_1、状态);
wakeUpExtendedSleep = true;
hw_wkup_reset_interrupt ();
pm_sleep_mode_set (pm_mode_active);
hw_gpio_set_pin_function(REDLEDPORT, REDLEDPIN, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);
hw_gpio_pad_latch_enable (REDLEDPORT REDLEDPIN);
hw_gpio_pad_latch_disable (REDLEDPORT REDLEDPIN);
hw_gpio_set_inactive (REDLEDPORT REDLEDPIN);
delay_ms (1000);
delay_ms (1000);
hw_gpio_set_active (REDLEDPORT REDLEDPIN);
}
但是gpio唤醒不会从休眠和扩展睡眠模式中唤醒设备。
进一步,我在gpio中断回调中放置led切换,回调正在执行,led打开,但设备正在从睡眠中醒来
被打断后,设备挂起
我想使用两个gpio从睡眠唤醒,如何配置和使用两个gpio唤醒使用hw_wkup_gpio_configure_pin
谢谢你!
Jagath
嗨jagath52,
谢谢你的问题。在最初的文章中,您放置了2个wkup_init()函数。所以在我的理解中,第一个正在按预期运行,另一个正在运行。我的假设正确吗?
为了唤醒,使用了ACCEL_INT_PORT / _PIN,所以您需要配置唤醒控制器,使用第二个GPIO来唤醒。是正确的吗?
谢谢,PM_Dialog
你好PM_Dialog
是的,我想用gpio唤醒控制器用第二个gpio唤醒设备。按键唤醒控制器正常工作。
谢谢你!
Jagath
嗨jagath52m
您能检查一下吗DA1469x唤醒控制器来自DA1469x门户的示例?要启用GPIO P0子块,WKUP_GPIO_P0_BLOCK_ENABLE宏需要设置为1。
请试一试,让我知道。
谢谢,PM_Dialog