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

⚠️
你好。。谢谢你来到论坛。令人兴奋的消息!我们现在正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有员额和帐户都已迁移。我们现在只接受新论坛的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
9个帖子/ 0新
最后一篇文章
琪纳尔
离线
最后一次见到:4个月2周前
加入:2020-09-23 08:58
DA1469x外部中断-中断时不调用中断处理程序

你好,对话,

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

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

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

无效唤醒中断cb(无效)
{
硬件启动复位中断();

UINT32_T状态;

/*读取端口0的状态*/
status = hw_wkup_get_status(hw_gpio_port_0);

/*检查POTR0的状态*/
if(状态和(1<硬件GPIO引脚12)){
/*通知主要任务*/
来自ISR的操作系统任务通知(acc主位,0x1,操作系统通知设置位);

/ *清除闩锁状态* /
hw_启动_清除_状态(hw_GPIO_端口_0,(1</*检查POTR0的状态*/
}
}
静态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);
硬件唤醒寄存器gpio p0中断(唤醒中断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();

启用唤醒检测(li2de12_hdl);

/*注册看门狗监视的ble_多链路任务*/
wdog_id=系统看门狗寄存器(假);

对于(;;){

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

/*在每个循环中通知看门狗*/
系统看门狗通知(wdog\U id);

/*阻止操作系统时挂起看门狗\u任务\u通知\u等待()*/
sys_watchdog_suspend(wdog_id);

/ *等待任何通知位,然后清除所有* /
ret=操作系统任务通知等待(0,操作系统任务通知所有位,&ulNotifiedValue,操作系统任务通知永远);

/*这必须永久阻止,直到收到任务通知。那么
返回值必须是OS_TASK_NOTIFY_SUCCESS * /
os_assert(ret == os_task_notify_success);

/*在轮询模式下读取INT引脚1
*或读取src状态寄存器
*/
if(ulNotifiedValue&0x1)
{
lis2de12_int1_gen_source_get(li2de12_hdl和src);
if(src.xh | | src.yh | | src.zh)
{
硬件gpio设置未激活(硬件gpio端口0,硬件gpio引脚24);
硬件gpio焊盘闩锁启用(硬件gpio端口0,硬件gpio引脚24);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_24);
启用唤醒检测(li2de12_hdl);
}
其他的
{
hw_gpio_set_active(hw_gpio_port_0,hw_gpio_pin_24);
硬件gpio焊盘闩锁启用(硬件gpio端口0,硬件gpio引脚24);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_24);
enableInActivityDetect(li2de12_hdl);

}
}
/*主要应用*/
系统看门狗通知和恢复(wdog id);
}

}

静态无效prvSetupHardware(无效)
{

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

/ *
*添加PDC LUT条目,以便在Port0上的事件后唤醒M33核心
*这很重要,因为当设备进入睡眠时M33关闭。
*/
uint32\u t pdc\u wkup\u gpio\u id\u 1=硬件pdc\u添加项(硬件pdc\u LUT\u项值(硬件gpio\u端口0,
hw_gpio_pin_12,hw_pdc_master_cm33,0));
OS_断言(pdc_wkup_gpio_id_1!=HW_PDC_无效_LUT_索引);

/ *做诀窍!*/
硬件pdc设置挂起(pdc工作gpio id 1);
hw_pdc_acknowledge(pdc_wkup_gpio_id_1);
/*初始化硬件*/
/*将自动调用“periph_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.
硬件gpio焊盘闩锁启用(硬件gpio端口0,硬件gpio引脚12);
hw_gpio_pad_latch_disable(hw_gpio_port_0,hw_gpio_pin_12);

/*在处理GPIO引脚后禁用COM电源域*/
hw_sys_pd_com_disable();
}

谢谢和问候,

吉纳尔。

设备:
PM_对话框
离线
最后一次见到:1周18小时前
工作人员
加入:2018-02-08 11:03
嗨,吉娜,

嗨,吉娜,

谢谢你的提问。似乎唤醒控制器配置正确。请尝试使用hw_wkup_configure_pin()而不是LIS2_WakeupEventsTask()中的hw_wkup_gpio_configure_pin()好吗?还请将去抖动时间设置为与教程中的wkup_init()相同。

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

谢谢,下午好

琪纳尔
离线
最后一次见到:4个月2周前
加入:2020-09-23 08:58
你好PM_DIALOG.

你好PM_DIALOG.

是的,我试过使用hw_wkup_configure_pin(),而且去抖动时间用于键WAKUP中断,我正在使用GPIO_唤醒中断,因为在唤醒控制器提到的DA1469x的BSP教程中可能没有给出去抖动时间,然后我添加了去抖动时间,但这对我的设备也没有影响。

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

谢谢和问候,

吉纳尔。

PM_对话框
离线
最后一次见到:1周18小时前
工作人员
加入:2018-02-08 11:03
嗨,吉娜,

嗨,吉娜,

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

谢谢,下午好

琪纳尔
离线
最后一次见到:4个月2周前
加入:2020-09-23 08:58
你好pm_dialog,

你好pm_dialog,

我能够通过hw_get_pin_status()验证引脚的状态,并且在设备运动检测时引脚状态也会发生变化,因为我已经为运动检测配置了中断,但此后中断处理程序不会被调用。

谢谢,

吉纳尔。

琪纳尔
离线
最后一次见到:4个月2周前
加入:2020-09-23 08:58

你好pm_dialog,

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

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

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

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

我使用的是USB Pro套件,所以无法通过逻辑分析仪进行调试。

谢谢,

吉纳尔。

PM_对话框
离线
最后一次见到:1周18小时前
工作人员
加入:2018-02-08 11:03
嗨,吉娜,

嗨,吉娜,

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

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

谢谢,下午好

琪纳尔
离线
最后一次见到:4个月2周前
加入:2020-09-23 08:58
你好pm_dialog,

你好pm_dialog,

感谢您的答复。

现在,我可以将我更改的inetrupt设置到下面的行

hw_-wkup_-gpio_-configure_-pin(hw_-gpio_-PORT_-0,hw_-gpio_-pin_-12,真,hw_-wkup_-pin_-STATE_-LOW);

使用硬件启动gpio配置引脚(硬件启动gpio端口0,硬件启动gpio引脚12,正确,硬件启动gpio引脚状态高);现在它开始工作了。

我还有一个问题

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

谢谢,

吉纳尔。

PM_对话框
离线
最后一次见到:1周18小时前
工作人员
加入:2018-02-08 11:03
嗨,吉娜,

嗨,吉娜,

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

>>当设备以睡眠模式移动时,我如何将设备放置在不移动和wakup的设备上睡眠?是否可能??

你能澄清你的新要求吗?

谢谢,下午好