linux 讓led閃爍起來,by timer,device tree
[email protected]{
compatible="cma9,jaguar_led";
led-gpios=<&gpio_cs 0 1>;
cma9,default-trigger = "timer";
status = "okay";
};
本章主要講述非標準(相對於PC而言)硬體介面程式設計。像通常的串列埠和網口,都是標準介面,有通用的程式設計規範,而這章講述的如LED、GPIO、SPI和I2C這樣的介面,在嵌入式系統中非常普通,由於這些介面的特殊性,沒有統一的程式設計規範。而在實際應用中,往往又不可缺少,所以這章的內容很重要。
本章的內容與具體的開發平臺結合比較緊密,如果在非對應的平臺上使用這些範例,可能需要根據實際情況進行修改和調整。
15.1 點亮一個LED燈
本節介紹如何使用命令列或C程式來控制LED燈點亮或熄滅。開發板上的可控LED燈通常都是一端接高電平或GND,另一端接GPIO。通過操作GPIO來控制其點亮和熄滅。
圖15.1 LED硬體連線示意圖
如圖15.1所示,兩個LED是由發光二極體組成,一端接高電平,另一端若接入高電平,則二極體不導通,LED不會發光。另一端若接入低電平,則二極體導通,LED發光。高低電平一般由GPIO輸出。
15.1.1 LED的操作介面
LED操作介面位於/sys/class/leds目錄下。此目錄下包含了關於LED操作的目錄,如下所示:
# ls/sys/class/leds/
beep led-err led-run
其中led-err目錄是ERR LED的操作介面,led-run目錄是RUN LED操作介面。以RUN LED為例,進入led-run目錄,該目錄的內容為:
# ls/sys/class/leds/led-run/
brightness max_brightness subsystem uevent
device power trigger
各個檔案作用介紹如表15.1所示。
表15.1 LED屬性檔案用途
檔名 |
作用 |
brightness |
用於控制LED亮滅(需要將LED燈設定為使用者控制) |
Subsystem |
符號連結,指向父目錄。 |
trigger |
寫入“none”可以將指示燈設定為使用者控制 |
寫入“heartbeat”可以將指示燈設定為心跳燈 |
|
寫入“nand-disk”可以將指示燈設定為NAND Flash讀寫燈 |
|
power |
裝置供電方面的相關資訊 |
15.1.2 LED控制
以led_run燈為例,點亮命令如下:
# echo none > /sys/class/leds/led-run/trigger #將LED RUN設定為使用者控制
#echo 1 > /sys/class/leds/led-run/brightness #控制 LED 點亮
#echo 0 > /sys/class/leds/led-run/brightness #控制 LED 熄滅
15.1.3 在C程式中操作LED
C程式中操作LED,首先需要設定trigger屬性。如下程式碼片段,將LED燈設定為使用者控制方式:
#define TRIGGER_NONE "none"
int fd = open(path, O_RDWR); //path為trigger路徑
...
ret = write(fd, TRIGGER_NONE, strlen(TRIGGER_NONE));
...
然後操作brightness屬性,設定LED點亮或熄滅:
char data[2]; int fd;
...
fd = open(path, O_WRONLY); //path為brightness路徑
data[0] = '0';
ret = write(fd, data, 1); //熄滅LED
...
下面給出的程式清單15.1,首先設定LED trigger屬性為“none”,然後設定brightness屬性交替為0和1。實現了LED每隔1s點亮一次。
程式清單15.1 LED操作
#define DEVICENAME "/sys/class/leds/jaguar_led/trigger"#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#define TRIGGER"trigger"
#define LED_PATH "/sys/class/leds/"
#define LED_STATUS"brightness"
#define TRIGGER_NONE"none"
int main(int argc,char **argv)
{
char path[20],data[2];
int fd, ret, flag;
if(argv[1] == NULL) {
printf("usage : ./led led_run");
return 0;
}
strcpy(path, LED_PATH);
strcat(path, argv[1]);
strcat(path, "/" TRIGGER);
fd = open(path, O_RDWR);
if(fd < 0) {
perror("open");
return -1;
}
ret = write(fd, TRIGGER_NONE, strlen(TRIGGER_NONE));
if(ret < 0) {
perror("write");
return -1;
}
close(fd);
strcpy(path, LED_PATH);
strcat(path, argv[1]);
strcat(path, "/" LED_STATUS);
fd = open(path, O_WRONLY);
if(fd < 0) {
perror("open");
return -1;
}
for(;;)
{
data[0] = flag ? '0': '1';
ret = write(fd, data, 1);
if(ret < 0) {
perror("write");
return -1;
}
flag = !flag;
sleep(1);
}
return 0;
}
my code : #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#define TRIGGER_NONE "none"
int main(int argc, char **argv)
{
int ret;
int fd;
const char buffer[10]={0x31,0x30};
char path[100];
//char i=0;
//int ret =0;
strcpy(path,DEVICENAME);
printf("Path is %s \n",path);
fd = open(path,O_RDWR);
ret = write(fd,TRIGGER_NONE,strlen(TRIGGER_NONE));
printf("ret is %d\n",ret);
close(fd);
return 0;
}
echo timer > trigger,echo none > trigger
echo 500 > delay_on
相關推薦
linux 讓led閃爍起來,by timer,device tree
[email protected]{compatible="cma9,jaguar_led";led-gpios=<&gpio_cs 0 1>;cma9,default-trigger = "timer";status = "okay";};
[MSP430DriverLib-3]使用Timer_A讓LED閃爍
cloc void b- put output period div 清除 開始 使用Timer_A。代碼如下: #include "./DriverLib/driverlib.h" int main() { WDT_A_hold( WDT_A_BASE );
[MSP430DriverLib-2]使用延時讓LED閃爍
gpio class 簡單 hold won out lib aso include 簡單地使用__delay_cycles來達到延時效果。 #include "./DriverLib/driverlib.h" int m
[dpdk] TSC , HPET, Timer, Event Timer,RDTSCP
chm end power cpu ont ctu tor 可能 映射 關於dpdk timer跨越CPU core調度的準確性問題 首先dpdk的timer接口裏邊使用 cpu cycle來比較時間。根據之前的內容 [dpdk] dpdk --lcores參數 當一個E
插上翅膀,讓Excel飛起來——xlwings(一)
圖片 pos 取數據 數組 並保存 () 讀取 pda 取數 python操作Excel的模塊,網上提到的模塊大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他們提供的功能歸納起來有兩種:一、用python讀寫Excel文件,實際上就是讀寫有
插上翅膀,讓Excel飛起來——xlwings(四)
列表 gin 修改名稱 udfs imp 前言 百度網盤 解決 而不是 前言 當年看《別怕,Excel VBA其實很簡單》相見恨晚,看了第一版電子版之後,買了紙質版,然後將其送人。而後,發現出了第二版,買之收藏。之後,發現Python這一編程語言,簡直是逆天,業余非程
有人想讓汽車無人化,但有人想讓汽車飛起來
常用 不同的 規範化 lin 難題 style 分享 耗時 -h 未來的出行方式,應該是生活幻想中空間最廣闊的一種。有人認為未來出行全靠一輛輛無主的自動駕駛汽車,有人認為未來可以通過粒子傳送實現瞬間移動……既然是幻想,那麽多離譜都不過分,比如說我就認為巨型的鋼鐵蜘蛛才是最適
插上翅膀,讓Excel飛起來——xlwings(二)
數組 百度 激活 true sting com 修改 file href 常用函數和方法 Book 工作簿常用的apiwb=xw.books[‘工作簿名稱‘] wb.activate()激活為當前工作簿 wb.fullname 返回工作簿的絕對路徑 wb.name 返
必看|Linux運維中必用的工具,讓你輕松10倍
1.0 接收 RoCE linux系統中 小天 刻度尺 捕獲 https 網絡流量 A:“A辦公區的網絡不太好咦” B:“今天C區這邊網速好快呀” C:“上傳這麽快,咋下載這麽慢呢?” 以上場景,作為Linux運維剛入門的同學來講,這些問題應該會經常
基礎知識漫談(3) 組合基礎知識,設計遊戲框架 如何讓畫面動起來?
如何讓畫面動起來? 都知道動畫的原理,想想看跑馬燈,在任意時刻把跑馬燈按停,面對眼睛的那附圖,它叫做幀(Frame)。 幀,就是一串兒連貫動畫裡的單個截面。 玩兒遊戲的人知道,要達到基本流暢的水準,30fps(frame per second)就夠了,達到毫無察覺的流暢,可能要到60fp
這樣玩雲函式路由,讓你看起來很高階
歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由李成熙heyli發表於雲+社群專欄 概念回顧 在掘金開發者大會上,在推薦實踐那裡,我有提到一種雲函式的用法,我們可以將相同的一些操作,比如使用者管理、支付邏輯,按照業務的相似性,歸類到一個雲函式裡,這樣比較方便管理、排查問題以及
這樣玩雲函數路由,讓你看起來很高級
開發者 實戰 技術分享 ctr login 發布 以及 new t github 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由李成熙heyli發表於雲+社區專欄 概念回顧 在掘金開發者大會上,在推薦實踐那裏,我有提到一種雲函數的用法,我們可以將相同
【小白看的Java教程】第十四章,讓陣列動起來
基本操作(重點) int[] nums = new int[]{1,3,5,7}; + 獲取陣列長度,語法:int size = 陣列名.length; int size = nums.length; -> 輸出結果4 + 獲取元素值,
JVM堆記憶體引數優化,讓效能飛起來
JVM堆記憶體引數優化,讓效能飛起來 堆記憶體是Java程序的重要組成部分,幾乎所有與應用相關的記憶體空間都和堆有關。現在主要介紹與堆記憶體相關的引數設定,這些引數對Java虛擬機器中非常重要的,也是對程式效能有著重要的影響。讓你徹底脫離OOM記憶體溢位等等帶來
python自定義字典的擴充套件類,讓字典操作起來更容易
python自定義的一個字典擴充套件類,可以讓字典操作起來更簡單, 比如: 原來需要這樣用:dic['website'] = 'sharejs.com' 有了這個類,你可以這樣用:dic.websites = 'sharejs.com' 是不是更簡單。 類定義如下 clas
10大最適合程式設計的字型推薦下載,讓程式碼看起來更美更舒服!
現在有事沒事就喜歡寫寫程式碼的人越來越多了,對於成天盯著螢幕工作的開發人員來說,程式設計程式碼可能是每天見得最多的東西了。可是絕大部分人都一直使用編輯器預設的字型,其實,換一套適合自己的程式設計字型不僅能讓程式碼看得更舒服,甚至還能提高工作效率的! 如果你有
css怎麼讓div動起來,實現動畫效果一直在動
<!DOCTYPE html> <html> <head> <style> div { width:100px; height:100px; background:red; position:relative; anim
一個代替linux的fetion的軟體,用起來挺方便的,而已可以在控制下就能使用。
以前一直用pidgin來寫簡訊,最好的是可以把資訊往自己手機上發,能將資訊發到手機上,呵呵。後來因為移動的升級,就無法登陸了,按照http://www.linuxsir.org/bbs/thread320802.html上的方法做過了,就是不行,我的版本是pidgin2.4
create-react-app原始碼解析(一),npm run start如何讓專案跑起來
小編花了點時間,大致弄懂npm run start如何執行專案的原理了,現在給大家分享下心得!npm run start是通過node跑js檔案,從而專案得以執行,小編通過npm run eject拿到了所有配置,然後通過解析原始碼,明白瞭如果通過webpack等讓專
假如我們等不到對的人,就趁孤單讓自己優秀起來。單身是最好的升值期
01為什麼單身?因為想變成更好的自己啊 曾經發起過一個話題“你單身嗎?單身多久了?在你單身的這段時間裡,最大的改變是什麼?”收到了成千上百條回覆。 本來我以為,絕大多數人會覺得單身是件悲傷的事情,會因為單身直接或間接地給自己帶去很多負面情緒,覺得自己孤獨寂寞,心無所依。 但