關於Linux 下面使用gpio 控制led燈 有很多方式.
1.直接操作GPIO : 比如gpio15 ,那麼就使用
echo 15 > /sys/class/gpio
echo out > /sys/class/gpio/gpio15/direction
echo 1 > /sys/class/gpio/gpio15/value //enable
echo 1 > /sys/class/gpio/gpio15/value //disable
2.使用led-gpio設備驅動, 將gpio做成led設備(比如led取名green),這個一般需要修改kernel 中對應板卡的dev.c文件, 註冊 gpio_led_platform_data 設備
那樣就是控制 /sys/class/led/green
echo 0 > /sys/class/led/green/brightness
echo 1 > /sys/class/led/green/brightness //大於0的數值都OK
那麼如果控制LED燈的閃爍呢?有兩種方式:
應用空間控制,通過操作led的亮和滅來模擬閃爍.
網上描述的大部分都是這種方式.這種方式的好處是簡單,並且通過應用程序控制,比較好根據實際的應用邏輯進行操作.
但是如果用戶的應用對時間要求很高,或在無法進行阻塞等待,那麼這種方式就可能不能滿足需求.這個時候推薦使用kernel進行閃爍控制.kernel控制led的閃爍
這裏只描述最簡單的實現方式.
打開kernel的 CONFIG_LEDS_TRIGGERS 和 CONFIG_LEDS_TRIGGER_TIMER
已led名字爲green 爲例:
#cat /sys/class/led/green/trigger
[none] nand-disk mmc0 timer
輸出類似上面的trigger條件,默認的是不閃爍,就是none
echo timer > /sys/class/led/green/trigger
這樣 green 這個led燈就開始閃爍,默認是亮500ms,滅500ms. 如果想修改閃爍頻率,可以直接修改 /sys/class/led/green/delay_on 和 /sys/class/led/green/delay_off
echo 100 > /sys/class/led/green/delay_on
echo 100 > /sys/class/led/green/delay_off