先看一下范例:
和led文件一样, 首先要定义pio, 给要用的按键定义一个别名
pio不能和led文件里的一样, 我开始就是设成重叠的了, 结果
总是会出现莫名其妙的错误.
debounce 2 20
这句是消抖, 会被button文件处理器自动翻译为button.c文
件里的
PioDebounce((1UL<<0)|(1UL<<1)|(1UL<<5)|(1UL<<6)|(1UL<<7), 2, 20);
如果不加后面的参数2和20,那么默认的参数是1,0
最后, 还需要定义一个消息, 让vm知道什么时候往你的消息
处理函数发送消息. 要发送的键盘消息是你自己定义的, 格式
如下:
message BUTTON_RESET_PRESS
BUTTON_UP enter
其中 BUTTON_UP 是上面定义的pio的别名,
BUTTON_RESET_PRESS 是vm回调你消息处理函数时发
送的消息名. button文件处理器会自动的为每个消息编一个
号:
enum
{
BUTTON_RESET_PRESS = 1000 /* base value */,
BUTTON_UP_PRESS,
BUTTON_DOWN_PRESS,
BUTTON_LEFT_PRESS,
BUTTON_RIGHT_PRESS,
PIO_RAW
};
这样在消息处理函数里, 只要这样处理就可以了:
switch (id)
{
case BUTTON_RESET_PRESS:
break;
case BUTTON_UP_PRESS:
break;
......
}
后面那个enter代表的是按下
还可以换成下面这些:
held 表示按下按键, 后面可以跟一个数字, 表示按下多少微秒才发送消息
release 表示释放按键
held_release 表示按下再释放按键, 后面也可跟一个数字
repeat 表示每隔XXX微秒就发送一次消息, 例如:
message VOLUME_UP
UP enter
UP repeat 500
表示按下UP时发送一次VOLUME_UP消息, 每隔500微秒再发送一次.