GPIO及中断API函数
来源:互联网 发布:黑客军团 第三季 知乎 编辑:程序博客网 时间:2024/05/19 13:23
http://blog.sina.com.cn/s/blog_a6559d9201015vx9.html
#include <linux/gpio.h> // 标准 GPIO_API
这种用法的保护作用前提是大家都遵守先申请再访问,有一个地方没遵守这个规则,这功能就失效了。好比进程互斥,必需大家在访问临界资源的时候都得先获取锁一样,其中一个没遵守约定,代码就废了。
例1:void gpio_free(unsigned gpio);//释放 GPIO port 的使用权,由gpio 指定具体 port。
例2:gpio_free(RK29_PIN0_PA0);//释放GPIO0_A0
int gpio_direction_input(unsigned gpio);//返回0
例3:gpio_direction_input (RK29_PIN0_PA0);//把GPIO0_A0设置为输入
int gpio_direction_output(unsigned gpio, int value);//返回0
void gpio_set_value(unsigned gpio, int value);
例6:gpio_set_value (RK29_PIN0_PA0, GPIO_HIGH);// 设置RK29_PIN0_PA0电平为高。
支持这种gpio的平台为了通过在这个函数中返回非零来区分其它类型的gpio(需要一个已经被
//创建到导出GPIO的 sysfs link
中断部分的API:
范例:irq是要申请的硬件中断号; handler是向系统登记的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev参数将被传递; flags是中断处理的属性,若设置SA_INTERRUPT,标明中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,慢速处理程序不屏蔽;若设置SA_SHIRQ,则多个设备共享中断,*dev在中断共享时会用到,一般设置为这个设备的device结构本身或者NULL。 当flags发生时,触发中断。
{
}
void main(void)
{
// 把GPIO0_A0的PIN值转换为相应的IRQ值,并赋值给变量gpioToIrq。
unsigned long req_flags = IRQF_TRIGGER_RISING;
int gpioToIrq = gpio_to_irq (RK29_PIN0_PA0);
If(gpioToIrq != -1){
//注册PA0IntHandler中断处理函数,中断号是RK29_PIN0_PA0,设置为上升沿触发
}
irq: 释放的中断号
例10: free_irq(gpio_to_irq(RK29_PIN0_PA0),NULL);// 释放GPIO0_A0中断。
irq: 指定的中断号type
例11:set_irq_type(gpio_to_irq(RK2818_PIN_PA0),IRQF_TRIGGER_LOW);//设置GPIO0_A0中断为低电平触发
强行关闭指定中断,不会等待当前中断处理程序执行完毕。,立即返回
例12:disable_irq_nosync(gpio_to_irq(RK29_PIN0_PA0));//关闭GPIO0_A0中断。
将关闭硬件中断并等待(可能有的)中断处理完成才返回。
例13:disable_irq (gpio_to_irq(RK29_PIN0_PA0));//关闭GPIO0_A0中断。
使能一个指定的中断
例14: enable_irq (gpio_to_irq(RK29_PIN0_PA0));//使能GPIO0_A0中断。
注意:使能IRQ和不使能IRQ应该配对使用。
例15:static inline int enable_irq_wake(unsigned int irq)
{return set_irq_wake(irq, 1);
}
static inline int disable_irq_wake(unsigned int irq)
{
return set_irq_wake(irq, 0);
}
调用此函数,是否会让GPIO进入省电睡眠模式,与enable_irq_wake和disable_irq_wake函数相关,
例16:如果先调用了enable_irq_wake(gpio_to_irq(RK29_PIN0_PA0)),则即使调用了
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- GPIO及中断API函数
- Linux的 标准GPIO及中断API函数
- Linux_GPIO及中断API函数
- GPIO中断处理函数
- FS_NXPM4的GPIO中断开发及分析
- FS_NXPM4的GPIO中断开发及分析
- H3CNE 312题和313题 直连路由静态路由的下一跳问题
- bionic Condition
- SVG中的'defs' and 'use'-可复用的图元定义
- Linux /proc目录下meminfo与cpuinfo文件分析
- 纯C实现字符串拷贝
- GPIO及中断API函数
- QTP常用函数
- MFC LINK : error : Internal error during ReadSymbolTable
- opencv cvSaveImage 无损保存图片
- php设置session的生存周期
- Spring.NET IOC简单DEMO
- mongodb基本增删改查
- cut、sort、tr、wc、head、tail
- 配置Ubuntu