Linux gpio子系统:gpio_direction_output 与 gpio_set_value的区别
背景
最近改驱动程序,看到驱动代码中既有gpio_direction_output
也有gpio_set_value
。
结论
作用相同,但有差别:
gpio_direction_output (port_num,0/1)
,在某个GPIO口写上某个值的同时,把端口设置为输出模式。gpio_set_value(port_num,0/1)
一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它对此不关心。
建议:系统开发人员在要结合这两者来使用,以便提高效率。 一般某个端口设置好了输入与输出模式后,最好不要经常变动。
- 首先,调用
gpio_direction_output()
,设置方向的同时,设置值。 - 此后,,直接使用
gpio_set_value()
设置值就可以了,
这样可以省去再次调用设置输出模式的操作,从而提高运行效率!