迅為imx6ull開發板使用c語言呼叫shell命令控制led燈
用命令來控制 led 燈沒有感覺,那可以使用程式來控制,讓程式幫我們輸入這些命令,我們可以使用system 函式來完成。
標頭檔案:#include
格式:system(要執行的命令)
程式碼實現:
#include
void main(void)
{
system(“echo none > /sys/class/leds/sys-led/trigger”);//設定觸發方式
while(1)
{
system(“echo 1 > /sys/class/leds/sys-led/brightness”);//點亮 led2
sleep(5);
system(“echo 0 > /sys/class/leds/sys-led/brightness”);//關閉 led2
sleep(5);
}
}
我們來寫一下這個程式,我們進到 samba 指定的這個路徑下,我們在這個路徑下建立 c 程式,名為 led.c,然後用 source insight 開啟這個檔案,因為這個程式非常簡單,我直接複製程式,我們在進入 while 迴圈之前先設定了下 led 觸發方式,把它設定成沒有觸發,這個就有點類似於 32
開啟 ubuntu,進到 samba 指定的這個路徑下,我們就可以在 samba 這個路徑看到 .c 檔案了,如下圖所示。
然後我們把 .c 檔案從 samba 指定的目錄把它考到 ubuntu 的目錄下,然後我們進到這個目錄,如下圖所示。
我們直接使用交叉編譯器編譯下 led.c ,因為是在開發板上執行的,所以就不能使用 gcc 了。我們使用靜態編譯,這樣就得到了 led 這個可執行的程式。如下圖所示。
把這個可執行檔案拷貝到開發板,我們可以使用 U 盤或者 TF 卡也可以使用 NFS ,這個依據自己的習慣來就可以了,我這裡使用 nfs 。進到開發板的控制終端,然後給開發板連下網,我先配置下無線密碼,然後聯網,因為我這裡要使用 nfs, 然後我們來掛載下這個目錄,然後我們把 led 這個可執行檔案拷貝到 nfs共享的目錄,這樣就可以在開發板上看到 led 這個可執行檔案了,我這裡給他拷貝到開發板上,進到 opt 這個目錄下,如下圖所示。
s 看一下,如下圖所示。
我們來執行下這個可執行檔案,如下圖所示。
可以看到開發板現在 led2 這個燈的狀態,來執行下這個可執行檔案,這個燈就是一閃一閃的了,如下圖所示。
使用 ctrl+c 打斷這個程式的執行,這個燈現在已經不亮了,如下圖所示。
然後我們在執行下,這樣我們就使用程式成功控制了一個燈並實現了一個閃燈的程式,其實這個程式裡面的方法和我們直接使用命令的方法是一樣的,只不過我們是使用 c 語言來呼叫我們的 shell 命令來實現,就不用再人為的輸入了。
在 led 裝置的這個目錄下,還有一個叫 beep 的蜂鳴器裝置,蜂鳴器我們也可以使用這個方法來開啟和關閉蜂鳴器,這就作為一個作業大家自己來試下,方法和點亮一個 led 燈方法是一樣的,我們可以先用命令來試下,然後再用 system 呼叫 shell 命令用程式實現。