2013年1月16日 星期三

[轉錄]gpio_direction_output() v.s. gpio_set_value()之間的使用關係



       在linux驅動中常常會碰到gpio_set_value(port_num,0/1)或gpio_direction_output (port_num,0/1)這兩者有什麼關係呢?
       gpio_set_value(port_num,0/1) 一般只是在這個GPIO口的寄存器上寫上某個值,至於這個端口是否設置為輸出,它就管不了!,而gpio_direction_output (port_num,0/1),在某個GPIO口寫上某個值之後,還會把這個端口設置為輸出模式。
       因此,有人也許就會建議,把gpio_set_value這個函數直接去掉不用,是否可以,顯然是可以的。
 但是為什麼系統還要用呢,我個人分析是,系統開發人員在要結合這兩者來使用,以便提高效率。 一般某個端口設置好了輸入與輸出模式後,最好不要經常變動。
   首先要調用gpio_direction_output(),以後要設置高低電平時,直接使用gpio_set_value()就可以了,這樣可以省卻再次調用設置輸出模式的操作,從而提高運行效率!

沒有留言: