ThreadCtl(_NTO_TCTL_IO, 0); // 打开线程访问IO的权限
gpio_open -> 返回gpio的fd
gpio_set_interrupt_cfg -> 设置GPIO引脚的中断模式,例如通过给定GPIO引脚号和GPIO_INTERRUPT_TRIGGER_RISING设置在上升沿时触发中断
gpio_get_interrupt_cfg -> 获取GPIO引脚的中断编号
在上面get_interrupt_cfg后,就获取了GPIO引脚的中断号
下面就可以设置ISR(Interrupt Service Runtime, 中断处理函数)
SIGEV_INTR_INIT -> 对sigevent做初始化,例如:SIGEV_INTR_INIT(sigevent_);
InterruptAttachEvent -> 返回id, 这一步降GPIO的中断绑定到事件 InterruptAttachEvent(irq, sigevent_, _NTO_INTR_FLAGS_TRK_MSK) ,
-> 其中irq是gpio_get_interrupt_cfg返回的, _NTO_INTR_FLAGS_TRK_MSK是中断标志参数,代表当中断处理程序ISR运行的时候,自动屏蔽当前中断,防止中断嵌套
while
InterruptWait_r -> 等待GPIO产生中断后到达ISR中发送event到当前线程
-> 在ISR中会屏蔽中断号对应的中断请求
// 做一些事情
InterruptUnmask -> 打开对应中断号的中断请求
GPIO最大支持40个引脚,配置GPIO中断的时候需要指定引脚编号
sigevent 信号事件,POSIX标准定义的结构体,用于描述异步事件的通知方式
#include <signal.h>
struct sigevent {
&

最低0.47元/天 解锁文章
904

被折叠的 条评论
为什么被折叠?



