Sensor control 中
我想通过一个 event handler code 处理两个GPIO 的interrupt ,
我了解到的在初始化的时候可以先配置两个GPIO 的中断,如调用
evhSetupGpioTrigger(0, AUXIO_I_BUTTON, BUTTON_PRESSED, EVH_GPIO_TRIG_ON_MATCH);
evhSetupGpioTrigger(0, AUXIO_I_BUTTON2, BUTTON_PRESSED, EVH_GPIO_TRIG_ON_MATCH);
两个中断都触发event index 0 。
但是我再event handler A code 中,如何判断中断源是哪个呢?
我了解到,可以调用 evhGetActiveTrigger( evindex )这个函数,
但是evindex 怎和 Gpio 一 一 对应的 呢?
我在Sensor Control 的debug 中看到了evhGetActiveTrigger 的汇编代码
ld R0,[#fwCtrlInt/bvActiveEvent]
我也没有找到 fwCtrlInt. bvActiveEvent 的解释,
麻烦帮忙解答一下吧!
Kevin Qiu1:
同一个index无法确定触发源是哪个不同index可以看看 evhGetActiveTrigger Prototype: evhGetActiveTrigger(bvEvent) This procedure can be called from event handler code to determine which event index triggered the event handler code. Return value(s) bvEvent – Bit-vector indicating the event index that triggered the event handler code
user1600444:
回复 Kevin Qiu1:
没有理解你说的不同的index 是什么意思, 我现在是两个GPIO的中断, 不能算做两个index吗?
另外这个evhGetActiveTrigger函数, 我没有理解 bvEvent 和 中断源的关系,这个解释也不太理解。 能帮忙举个例子吗?
Kevin Qiu1:
回复 user1600444:
index就是evhSetupGpioTrigger(0, AUXIO_I_BUTTON, BUTTON_PRESSED, EVH_GPIO_TRIG_ON_MATCH)中的0,
你可以看Sensor Controller help中的GPIO interrupt章节
user1600444:
回复 Kevin Qiu1:
evhSetupGpioTrigger(0, AUXIO_I_BUTTON_PRESSED, EVH_GPIO_TRIG_ON_MACTH)
这个函数里的0, 是不是就是和下图中的 event index 0 是对应的?
按照这样子的理解, 多个IO 可以都触发 event index 0 , 但是在event handler A code 中就不能区分是哪个IO 触发的中断了。
但是如果是这样子的话, evhGetActiveTeigger() 存在的意义是什么呢?
This procedure can be called from event handler code to determine which event index triggered the event handler code.
本身event handler code 已经和event index 一 一 对应的。
Kevin Qiu1:
回复 user1600444:
evhGetActiveTeigger() 是用来确定是哪个event index触发了 event handler code,可以返回不同的index number