0

我正在尝试读取 Telosb 中的外部按钮中断。我正在使用 GIO2 来读取中断,它与轮询技术配合得非常好,但我正在寻找更接近实际中断方法的东西。

参考 TinyOS,有一个 HplMsp430Interrupt 接口可以实现。我在 Contiki-OS 中找不到类似的东西。

更改引脚状态似乎不会触发任何事件,因为PROCESS_WAIT_EVENT没有响应。

4

1 回答 1

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)、 where PORT_NUMBERisPORT1PORT2(支持中断处理程序的端口)声明中断处理程序函数。

请参阅contiki/cpu/msp430/button.cTelosB 按钮中断处理程序是如何实现的示例,它非常简单。

于 2016-01-14T13:56:43.253 回答