板子上User按键是GPIO5, LED是GPIO9.
我们本次需要实现的是,按键按下,中断触发一个信号量,然后控制LED的亮灭。中断触发和信号量触发的方式可以避免轮询的查询key的GPIO的状态和LED预期的状态。可以节省很多的CPU资源,比较的实用。
在./application/sample/wifi-iot/app/下面创建文件夹key2led,并在该文件夹下创建key2led.c和BUILD.gn两个文件。Key2led的BUILD.gn中包括了:
并且把key2led的构建library添加到app这一层的BUILD.gn中:
我们再看代码,先配置GPIO,GPIO9配置为输出,GPIO5配置为输入,且需要打开中断,上升沿有效,中断处理函数释放信号量。配置完GPIO,创建一个semphare,用于中断和Task之间的同步。之后创建一个LED控制的任务。用于等待信号量的同步。