我正在尝试在Telosb中读取外部按钮中断。我正在使用GIO2来读取中断,并且它在轮询技术方面工作得很好,但我正在寻找更接近实际中断方法的东西。
参考TinyOS,有一个可以为此目的实现的HplMsp430Interrupt接口。我在Contiki-OS中找不到类似的东西。
更改引脚状态似乎不会触发任何事件,因为PROCESS_WAIT_EVENT
没有响应。
答案 0 :(得分:1)
TelosB上按钮的驱动程序已在Contiki中实现。无需在中断处理程序级别使用它,只需调用Contiki API:
#include "dev/button-sensor.h"
PROCESS_THREAD(app_Process, ev, data)
{
PROCESS_BEGIN();
SENSORS_ACTIVATE(button_sensor);
for(;;) {
PROCESS_WAIT_EVENT();
if (ev == sensors_event && data == &button_sensor) {
puts("button clicked");
}
}
}
如果您正在谈论其他事情并且实际上需要实现自己的中断处理程序,那么Contiki对您没有多大帮助。对于某些Contiki平台,有用于控制GPIO引脚的宏或函数,但不适用于msp430
。所以你只需要使用编译器头中的I / O端口接口,并用ISR(PORT_NUMBER, function_name)
声明中断处理函数,其中PORT_NUMBER
是PORT1
或PORT2
(一个端口)支持中断处理程序。)
有关TelosB按钮中断处理程序如何实现的示例,请参阅contiki/cpu/msp430/button.c
。它非常简单。