DA1469x外部中断-中断时不调用中断处理程序

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
9个帖子/ 0新
最后发表
Zinal
离线
最后看到:4个月2个星期前
加入:2020-09-23 08:58
DA1469x外部中断-中断时不调用中断处理程序

你好,对话框,

我在DA1469x上通过LIS2DE12生成外部中断。我的问题是当设备移动或检测到的动作时未调用中断处理程序。

我已经跟进了DA1469X教程外部中断教程。

这是sharinf代码,我已经实现了,请帮助我在这是什么问题?

空白wakeup_interrupt_cb(空白)

hw_wkup_reset_interrupt ();

UINT32_T状态;

/*读取PORT0状态*/
status = hw_wkup_get_status(hw_gpio_port_0);

/*检查POTR0的状态*/
if (status & (1 << HW_GPIO_PIN_12)) {
/*通知主任务*/
OS_TASK_NOTIFY_FROM_ISR (acc_main_h 0 x1, OS_NOTIFY_SET_BITS);

/ *清除闩锁状态* /
hw_wkup_clear_status(HW_GPIO_PORT_0, (1 << HW_GPIO_PIN_12));
/*检查POTR0的状态*/


static void LIS2_WakeupEventsTask(void *pvParameters)

Int8_t wdog_id;
OS_BASE_TYPE RET;
UINT32_T ULNOTIFIONVALUE;
lis2de12_int1_src_t src;

hw_wkup_init(null);
hw_wkup_register_gpio_p0_interrupt (wakeup_interrupt_cb, 1);
hw_wkup_gpio_configure_pin (HW_GPIO_PORT_0 HW_GPIO_PIN_12,真的,HW_WKUP_PIN_STATE_LOW);

/ *启用WKUP控制器的中断* /
hw_wkup_enable_irq ();

enableWakeUpDetect (li2de12_hdl);

/*将ble_multi_link任务注册为看门狗监控*/
wdog_id = sys_watchdog_register(假);

(,) {

printf(“lis2_wakeupeventstask任务\ r \ n”);

/*在每个循环中通知watchdog */
sys_watchdog_notify (wdog_id);

/*暂停watchdog while blocking on OS_TASK_NOTIFY_WAIT() */
sys_watchdog_suspend(wdog_id);

/ *等待任何通知位,然后清除所有* /
ret = OS_TASK_NOTIFY_WAIT(0, OS_TASK_NOTIFY_ALL_BITS, & ulnotiffiedvalue, OS_TASK_NOTIFY_FOREVER);

/* This必须永远阻塞,直到收到任务通知。所以,
返回值必须是OS_TASK_NOTIFY_SUCCESS * /
os_assert(ret == os_task_notify_success);

/*在轮询模式下读取INT pin1
*或读取SRC状态寄存器
*/
如果(ulNotifiedValue & 0 x1)

lis2de12_int1_gen_source_get (li2de12_hdl src);
如果(src)。xh | | src。本产品| | src.zh)

hw_gpio_set_inactive (HW_GPIO_PORT_0 HW_GPIO_PIN_24);
hw_gpio_pad_latch_enable (HW_GPIO_PORT_0 HW_GPIO_PIN_24);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_24);
enableWakeUpDetect (li2de12_hdl);

其他的

hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_24);
hw_gpio_pad_latch_enable (HW_GPIO_PORT_0 HW_GPIO_PIN_24);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_24);
enableInActivityDetect(li2de12_hdl);



/* Main Application */
sys_watchdog_notify_and_resume (wdog_id);

prvsetuhardware (void)

hw_gpio_pad_latch_disable_all();// ......避免任何未使用的浮动引脚。

/ *
*添加PDC LUT条目,以便在Port0上的事件后唤醒M33核心
*这很重要,因为当设备进入睡眠时M33关闭。
*/
uint32_t pdc_wkup_gpio_id_1 = hw_pdc_add_entry(HW_PDC_LUT_ENTRY_VAL(HW_GPIO_PORT_0), uint32_t pdc_wkup_gpio_id_1 = hw_pdc_add_entry(HW_PDC_LUT_ENTRY_VAL(HW_GPIO_PORT_0,
hw_gpio_pin_12,hw_pdc_master_cm33,0));
OS_ASSERT (pdc_wkup_gpio_id_1 ! = HW_PDC_INVALID_LUT_INDEX);

/ *做诀窍!*/
hw_pdc_set_pending (pdc_wkup_gpio_id_1);
hw_pdc_acknowledge(pdc_wkup_gpio_id_1);
/*初始化硬件*/
/* ' peripher_init()'将被自动调用
*现在和在设备的每一个唤醒*/
PM_SYSTEM_INIT(PERIPH_INIT);

/*在处理任何GPIO管脚之前启用COM电源域*/
hw_sys_pd_com_enable ();

/*加速计中断引脚*/
hw_gpio_configure_pin(hw_gpio_port_0,hw_gpio_pin_12,hw_gpio_mode_input_pullup,hw_gpio_func_gpio,true);// Accelerometer_Int1.
hw_gpio_pad_latch_enable (HW_GPIO_PORT_0 HW_GPIO_PIN_12);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_12);

/*处理GPIO引脚后关闭COM电源域*/
hw_sys_pd_com_disable();

感谢和问候,

Zinal。

设备:
PM_Dialog
离线
最后看到:1周1天前
工作人员
加入:2018-02-08 11:03
嗨Zinal,

嗨Zinal,

谢谢你的问题。唤醒控制器似乎配置正确。请尝试在LIS2_WakeupEventsTask()中使用hw_wkup_configure_pin()代替hw_wkup_gpio_configure_pin()。还请将恢复时间设置为与教程中的wkup_init()相同。

此外,如果探测P0_12(唤醒引脚),您是否能够在LIS2DE12生成中断时检测下降沿?LIS2DE12是否会产生上升或下降的边缘中断?

谢谢,PM_Dialog

Zinal
离线
最后看到:4个月2个星期前
加入:2020-09-23 08:58
你好PM_DIALOG.

你好PM_DIALOG.

是的,我尝试过与hw_wkup_configure_pin也()和消除抖动时间KEY_WAKUP中断和我使用GPIO_WAKEUP打断这可能不是给定防反跳时间在BSP教程中唤醒DA1469x提到的控制器,然后我也添加了防反跳时间但是没有影响我的设备也。

我想从你那里知道,我们如何从软件探测P0_12,因为我是第一次做,所以我不知道怎么做?你能帮我吗?

感谢和问候,

Zinal。

PM_Dialog
离线
最后看到:1周1天前
工作人员
加入:2018-02-08 11:03
嗨Zinal,

嗨Zinal,

我在先前的评论中的意思是使用逻辑分析工具或万用表探测P0_12引脚。你能检测到中断吗?销的状态是什么?

谢谢,PM_Dialog

Zinal
离线
最后看到:4个月2个星期前
加入:2020-09-23 08:58
你好pm_dialog,

你好pm_dialog,

我可以通过hw_get_pin_status()来验证pin的状态,也可以在设备运动检测时pin的状态被改变,因为我已经为运动检测配置了interrupt,但在那之后interrupt_handler没有被调用。

谢谢,

Zinal。

Zinal
离线
最后看到:4个月2个星期前
加入:2020-09-23 08:58

你好pm_dialog,

你能回答我这个问题吗?它会是有帮助的。

我能够获得PIN状态,引脚状态正在更改,而GPIO P0_12的设备的运动检测,但不执行Interrupt_Handler仍在等待中断。

在等待中断之前,我用hw_get_pin_status()调试这个GPIO P0_12,当设备被移动时,它会变高。

我无法在中断配置中获得可能存在的问题。

我使用USB Pro工具包,所以不能调试通过逻辑分析仪。

谢谢,

Zinal。

PM_Dialog
离线
最后看到:1周1天前
工作人员
加入:2018-02-08 11:03
嗨Zinal,

嗨Zinal,

你能在调试模式下运行吗?

中断产生时引脚的状态是什么?是高还是低?

谢谢,PM_Dialog

Zinal
离线
最后看到:4个月2个星期前
加入:2020-09-23 08:58
你好pm_dialog,

你好pm_dialog,

感谢您的答复。

现在我可以得到下面一行我更改的中断

hw_wkup_gpio_configure_pin (HW_GPIO_PORT_0 HW_GPIO_PIN_12,真的,HW_WKUP_PIN_STATE_LOW);

与hw_wkup_gpio_configure_pin(HW_GPIO_PORT_0,HW_GPIO_PIN_12, true, HW_WKUP_PIN_STATE_HIGH);现在的工作。

我还有一个问题

我如何将设备放在设备上没有移动和宽度移动时的设备睡觉,这是可能的吗??

谢谢,

Zinal。

PM_Dialog
离线
最后看到:1周1天前
工作人员
加入:2018-02-08 11:03
嗨Zinal,

嗨Zinal,

很高兴你可以叫醒它!问题是唤醒引脚极性。

>>我如何让设备在不移动的设备上睡眠,并在它移动时唤醒与睡眠模式是可能的??

你能澄清你的新要求吗?

谢谢,PM_Dialog