android内核驱动 杂项,第十五章_Android内核驱动——杂项

文件,创建struct device对象

对每个GPIO,调用gpio_direction_output设置其初始输出电平

timed_gpio_remove 函数则做相反的工作。

435c92834ae3b0f0b37aaccae412f653.png

timed_gpio_data把一个GPIO设备与一个hrtimer定时器关联。最后一个成员变量active_low,它的含义是多重的,在probe 阶段,会根据这个变量设置GPIO输出的电平,这时候该变量类似于指定GPIO在初始化时候的默认电平。但在后续通过sysfs的enable函数设置GPIO输出电平时候,这个变量则作为一个标志使用,如果active_low!=0,则将输出电平极性反转,否则不反转。例如:如果调用gpio_enable(struct timed_output_dev *dev,int value)函数,传进来的value参数值是1,那么如果active_low==0,则将GPIO 引脚输出高电平;但是如果active_low不等于0,则输出的电平是低电平。

定时器的handler函数gpio_timer_func每当设置的hrtimer的timeout时间到了,自动被内

395a1581e88192565d535681b7311ad0.png

可见,该函数让GPIO输出的电平取决于timed_gpio_data->active_low。如果active_low!=0,则输出高电平,否则输出低电平。

gpio_enable函数原型为static void gpio_enable(struct timed_output_dev *dev,int value),其中第2个参数value的含义有两个:第一是作为GPIO输出的电平,如果value不等于0,则输出高电平,否则输出低电平;其二,value还被用作重置hrtimer定时器的timeout时间值。

5382012e094f4b564e8eaa5510e7073d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值