TI中文支持网
TI专业的中文技术问题搜集分享网站

Sensor Control 中如何使多个中断触发到一个event handler code

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

赞(0)
未经允许不得转载:TI中文支持网 » Sensor Control 中如何使多个中断触发到一个event handler code
分享到: 更多 (0)