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

了解更多常见问题教程

9个职位/0个新职位
最后一篇文章
琪纳尔
离线
最后一次见到:2周1天前
已加入:2020-09-23 08:58
DA1469x外部中断-中断时不调用中断处理程序

你好Dialog,

我正在通过DA1469x上的LIS2DE12为运动检测生成外部中断。我的问题是当设备移动或检测到运动时,中断处理程序没有被调用。

我已经跟进了DA1469x教程外部中断辅导的。

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

无效唤醒\中断\ cb(无效)
{
hw_wkup_reset_interrupt();

uint32\t状态;

/*读取端口0的状态*/
status=hw\u wkup\u get\u status(hw\u GPIO\u PORT\u 0);

/*检查POTR0的状态*/
if(状态&(1</*通知主要任务*/
操作系统任务通知来自ISR(acc主位0x1,操作系统通知设置位);

/*清除闩锁状态*/
hw_wkup_clear_status(hw_GPIO_PORT_0,(1</*检查POTR0的状态*/
}
}
静态void LIS2\u WakeupEventsTask(void*pvParameters)
{
国际号码;
OS\ U底座\类型ret;
uint32\t uld值;
lis2de12\u int1\u src\u t src;

hw\u wkup\u init(空);
硬件\工作\寄存器\ gpio \ p0 \中断(唤醒\中断\ cb,1);
hw\u wkup\u gpio\u configure\u pin(hw\u gpio\u PORT\u 0,hw\u gpio\u pin\u 12,true,hw\u wkup\u pin\u STATE\u LOW);

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

enableWakeUpDetect(li2de12\u hdl);

/*注册看门狗监视的ble\u多链路任务*/
wdog\u id=sys\u watchdog\u register(假);

对于(;;){

printf(“LIS2\u WakeupEventsTask任务\r\n”);

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

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

/*等待任何通知位,然后将其全部清除*/
ret=OS\u TASK\u NOTIFY\u WAIT(0,OS\u TASK\u NOTIFY\u ALL\u BITS,&ulNotifiedValue,OS\u TASK\u NOTIFY\u FOREVER);

/*这必须永远阻止,直到收到任务通知。所以
返回值必须为OS\u TASK\u NOTIFY\u SUCCESS*/
OS\u ASSERT(ret==OS\u TASK\u NOTIFY\u SUCCESS);

/*在轮询模式下读取INT引脚1
*或读取src状态寄存器
*/
if(ulNotifiedValue&0x1)
{
lis2de12\u int1\u gen\u source\u get(li2de12\u hdl和src);
如果(src.xh文件|| src.yh公司|| src.zh公司)
{
hw\ U gpio\ U set\ U inactive(hw\ U gpio\ U PORT\ U 0,hw\ U gpio\ U PIN\ U 24);
硬件gpio pad latch enable(硬件gpio端口0,硬件gpio引脚24);
hw\ U gpio\ pad\ U latch\ U disable(hw\ U gpio\ U PORT\ U 0,hw\ U gpio\ U PIN\ U 24);
enableWakeUpDetect(li2de12\u hdl);
}
其他的
{
硬件gpio\设置\激活(硬件gpio\端口\ 0,硬件gpio\引脚\ 24);
硬件gpio pad latch enable(硬件gpio端口0,硬件gpio引脚24);
hw\ U gpio\ pad\ U latch\ U disable(hw\ U gpio\ U PORT\ U 0,hw\ U gpio\ U PIN\ U 24);
启用InactivityDetect(li2de12\u hdl);

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

}

静态void prvSetupHardware(void)
{

hw_gpio_pad_latch_disable_all();//。。。以避免任何未使用的浮动销。

/*
*添加一个PDC LUT条目,以便在端口0上发生事件后唤醒M33核心
*这一点很重要,因为当设备进入睡眠状态时,M33会关闭。
*/
uint32 \u t pdc \u wkup \u gpio \u id \u 1=hw \u pdc \u add \u entry(hw \u pdc \u LUT \u entry \u VAL(hw \u gpio \u PORT \u 0,
HW_GPIO_PIN_12,HW_PDC_MASTER_CM33,0));
操作系统断言(pdc\u wkup\u gpio\u id\u 1!=HW\u PDC\u无效\u LUT\u索引);

/*玩这个把戏!*/
硬件\u pdc \u设置\u挂起(pdc \u工作\u gpio \u id \u 1);
硬件\u pdc \u确认(pdc \u工作\u gpio \u id \u 1);
/*初始化硬件*/
/*“periph\u init()”将自动调用
*现在和每次设备唤醒时*/
pm\u系统初始化(periph\u 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);//加速计_INT1
硬件gpio pad latch enable(硬件gpio端口0,硬件gpio引脚12);
hw\ U gpio\ pad\ U latch\ U disable(hw\ U gpio\ U PORT\ U 0,hw\ U gpio\ U PIN\ U 12);

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

谢谢和问候,

兹纳尔。

设备:
PM\U对话框
离线
最后一次见到:1天20小时前
工作人员
已加入:2018-02-08 11:03
你好,Zinal,

你好,Zinal,

谢谢你的问题。似乎唤醒控制器配置正确。请尝试在LIS2\u WakeupEventsTask()中使用hw\u wkup\u configure\u pin()而不是hw\u wkup\u gpio\u configure\u pin()好吗?也请将去抖动时间设置为与教程中的wkup\u init()相同。

此外,如果探测P0\u12(唤醒引脚),当LIS2DE12生成中断时,是否能够检测到下降沿?LIS2DE12是否产生上升沿或下降沿中断?

谢谢,下午好

琪纳尔
离线
最后一次见到:2周1天前
已加入:2020-09-23 08:58
你好PM\U对话框

你好PM\U对话框

是的,我用hw\u wkup\u configure\u pin()试过了,而且去抖动时间是针对KEY\u WAKUP中断的,我用的是GPIO\u WAKEUP中断,因为在为唤醒控制器提到的DA1469x的BSP教程中可能没有给出去抖动时间,然后我还添加了去抖动时间,但这对我的设备也没有影响。

我想从你那里知道,既然我是第一次这么做,所以我不知道如何从软件上探测p0u12?你能帮忙吗??

谢谢和问候,

兹纳尔。

PM\U对话框
离线
最后一次见到:1天20小时前
工作人员
已加入:2018-02-08 11:03
你好,Zinal,

你好,Zinal,

我在前面的评论中的意思是使用逻辑分析仪工具或万用表来探测P0×12引脚。你能检测到中断吗?pin的状态如何?

谢谢,下午好

琪纳尔
离线
最后一次见到:2周1天前
已加入:2020-09-23 08:58
你好,PM\U对话,

你好,PM\U对话,

我可以通过hw\u get\u pin\u status()验证pin的状态,也可以在设备运动检测时验证pin的状态是否改变,因为我已经为运动检测配置了中断,但是在那之后中断处理程序没有被调用。

谢谢,

兹纳尔。

琪纳尔
离线
最后一次见到:2周1天前
已加入:2020-09-23 08:58

你好,PM\U对话,

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

我能够得到引脚状态和引脚状态正在改变,而运动检测的设备上,GPIO的P0\u12,但不执行中断处理程序,它仍然在等待一个中断。

在等待中断之前,我用hw\u get\u pin\u status()调试了这个GPIO P0\u 12,每当设备移动时,它就会变高。

我不能得到什么可能是中断配置的问题。

我使用的USB专业工具包,所以无法通过逻辑分析仪调试。

谢谢,

兹纳尔。

PM\U对话框
离线
最后一次见到:1天20小时前
工作人员
已加入:2018-02-08 11:03
你好,Zinal,

你好,Zinal,

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

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

谢谢,下午好

琪纳尔
离线
最后一次见到:2周1天前
已加入:2020-09-23 08:58
你好,PM\U对话,

你好,PM\U对话,

谢谢你的回复。

现在我可以把我换的inetrrupt拿到线下了

hw\u wkup\u gpio\u configure\u pin(hw\u gpio\u PORT\u 0,hw\u gpio\u pin\u 12,true,hw\u wkup\u pin\u STATE\u LOW);

有了hw\u wkup\u gpio\u configure\u pin(hw\u gpio\u PORT\u 0,hw\u gpio\u pin\u 12,true,hw\u wkup\u pin\u STATE\u HIGH),现在可以工作了。

我还有一个问题

我怎样才能让设备在不移动的设备上睡眠?当设备以睡眠模式移动时,wakup是可能的吗??

谢谢,

兹纳尔。

PM\U对话框
离线
最后一次见到:1天20小时前
工作人员
已加入:2018-02-08 11:03
你好,Zinal,

你好,Zinal,

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

>>我怎样才能让设备在不移动的设备上睡眠?当设备以睡眠模式移动时,wakup是可能的吗??

你能澄清一下你的新要求吗?

谢谢,下午好