Tuesday, March 06, 2012

gpio_direction_output vs 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()就可以了,這樣可以省卻再次調用設置輸出模式的操作,從而提高運行效率!

No comments: