色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > Linux學(xué)習(xí) > linux入門 > 嵌入式linux下GPIO驅(qū)動(dòng)程序操作方法(還有實(shí)例)

嵌入式linux下GPIO驅(qū)動(dòng)程序操作方法(還有實(shí)例) 時(shí)間:2018-08-10      來源:未知

嵌入式linux下GPIO驅(qū)動(dòng)程序,這是在嵌入式設(shè)備中最基本的操作,也是菜鳥進(jìn)階必經(jīng)之路,,今天我們就用各個(gè)實(shí)例來讓你深刻的了解GPIO驅(qū)動(dòng)程序,這都是我自己親手做過的,可以慢慢來理解。

首先我們?cè)诳打?qū)動(dòng)程序的代碼之前,先要知道庫(kù)函數(shù):

內(nèi)核GPIO庫(kù)函數(shù):

int gpio_request(unsigned gpio,const char *label)//申請(qǐng)GPIO資源

參數(shù)gpio表示GPIO所對(duì)應(yīng)的編號(hào),由于在平臺(tái)代碼中,已經(jīng)將CPU所有的GPIO進(jìn)行統(tǒng)一的規(guī)劃和編號(hào)

參數(shù)*label表示標(biāo)簽

因?yàn)間pio在內(nèi)核中,就和內(nèi)存一樣,所以你需要的就是申請(qǐng)

當(dāng)返回的值小于0的話,那么就表示失敗,如果大于0那就表示功能

gpio_direction_output(unsigned gpio,int value)//配置GPIO為輸出口,并輸出value(0,1)

gpio_direction_input(unsigned gpio)//配置為輸入口

gpio_set_value(unsigned gpio,int value);

//將GPIO寄存器設(shè)置為0或1,該函數(shù)并不設(shè)置GPIO為輸出,只是把相應(yīng)的寄存器設(shè)置為0

gpio_get_value(unsigned gpio);//同理,設(shè)置為輸入

gpio_free(unsigned gpio);//釋放GPIO資源

以上函數(shù)返回值表示GPIO的狀態(tài)

上面這些就是GPIO驅(qū)動(dòng)程序的基本概念理解,你必須要了解,才能進(jìn)行接下來的操作,接下來就是GPIO驅(qū)動(dòng)程序的操作,我們就來通過一個(gè)蜂鳴器的例子,來讓你對(duì)GPIO驅(qū)動(dòng)程序的操作有深刻理解,蜂鳴器的例子是這樣的:要求驅(qū)動(dòng)加載的時(shí)候,打開蜂鳴器,卸載驅(qū)動(dòng)時(shí),關(guān)閉蜂鳴器,下面就來解答。

#include

#include

#include

#include

#define LED_ON 1//宏定義一下,為了美觀

#define LED_OFF 0

//定義硬件GPIO結(jié)構(gòu)體

struct led_resource{

unsigned long gpio;//gpio的編號(hào),每個(gè)GPIO都有一個(gè)內(nèi)核分配的唯一編號(hào)

char *name; //gpio的標(biāo)簽

};

static struct led_resource led_info[]={

[0] = {

.gpio = S5PV210_GPD0(0),//管腳信息

.name = "GPC0_0"//管腳名稱

},

};

static void led_control(unsigned long gpio,int flags)

{

gpio_direction_output(gpio,0);//這句表示先把當(dāng)前GPIO口設(shè)置為輸出口,并且輸出0

gpio_set_value(gpio,flags);//然后在輸出想要設(shè)置的電平,前面先設(shè)置0是為了防止干擾

}

static int led_init(void)

{

gpio_request(led_inf0[0].gpio,led_inf[0].name);//申請(qǐng)GPIO資源

led_control(led_inf0[i].gpio,LED_ON);//調(diào)用函數(shù)來設(shè)置輸出口為1

return 0;

}

static void led_exit(void)

{

led_control(led_inf0[0].gpio,LED_OFF);//調(diào)用函數(shù)輸出0關(guān)閉蜂鳴器

gpio_free(led_inf0[0].gpio);//釋放GPIO資源

}

module_init(led_init);//注冊(cè)入口函數(shù)

module_exit(led_exit);//注冊(cè)出口函數(shù)

MODULE_LICENSE("GPL V2");//聲明該程序符合國(guó)際GPL委員會(huì)制定的標(biāo)準(zhǔn)

切記:在加載的時(shí)候,內(nèi)核會(huì)有調(diào)用入口函數(shù),他就會(huì)執(zhí)行入口函數(shù)的命令,燈就會(huì)亮,蜂鳴器就會(huì)叫,一但卸載驅(qū)動(dòng)程序的時(shí)候,內(nèi)核就會(huì)自動(dòng)調(diào)用出口函數(shù),當(dāng)然也會(huì)執(zhí)行出口函數(shù)的內(nèi)容。寫好程序后,把代碼寫成.C文件然后放在linux內(nèi)核源代碼字符設(shè)備驅(qū)動(dòng)所在的文件夾下,然后用當(dāng)前目錄的makefile編譯一下,然后把編譯好的驅(qū)動(dòng)程序通過tftp或其他方式傳到開發(fā)板的文件系統(tǒng)的任意一個(gè)文件夾。然后用命令加載這個(gè)驅(qū)動(dòng)程序或者卸載

這樣你就看到現(xiàn)象了,是不是不是那么難,不管是什么樣的例子,你只要掌握GPIO驅(qū)動(dòng)程序操作方法,那你就都可以迎刃而解了,想要了解更多GPIO驅(qū)動(dòng)程序操作方法,你可以參考Linux內(nèi)核驅(qū)動(dòng)之gpio子系統(tǒng)的使用

上一篇:嵌入式linux項(xiàng)目實(shí)例,嵌入式學(xué)霸總結(jié)

下一篇:Linux查看進(jìn)程命令有哪些

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 免费无码AAA片 | 麻豆tv在线| 亚洲毛片不卡AV在线播放一区 | 男同大尺度GV在线观看 | 国产初高中生在线视频 | 日本真人做人爱一区二区三区 | 免费午夜无码片在线观看影院 | 一级毛片播放 | 粉嫩馒头一线天在线视频 | 极品尤物被啪到呻吟喷水 | 欧洲裸体xxxxx | 日本欧美久久久久免费播放网 | 一本久道综合在线无码人妻 | 野花社区在线观看高清视频动漫 | 领导在办公室含我奶头小短文 | 激情综合色五月六月婷婷 | 成全视频在线观看免费高清在线观看 | 国产免费人成视频在线观看 | 国产精品毛片一区视频 | 手机在线观看免费av网址 | 久久精品三级视频 | 影音先锋人妻每日资源站 | 欧美丝袜在线观看 | 18禁男女污污污午夜网站免费 | 日本视频在线看 | 亚洲中文字幕无码久久2017 | 翁公粗大挺进王丽霞高潮嗨文 | 自在自线亚洲а∨天堂在线 | 国产制服丝袜亚洲日本在线 | japanese日本熟妇伦 | 手机真实国产乱子伦对白视频 | 天堂网www中文在线 中国av在线 | 久久精品娱乐亚洲领先 | 中文字幕第100页 | 按摩高潮A片一区二区三区 久久亚洲精品无码Va白人极品 | 欧美videossex精品 | 51视频国产精品一区二区 | 男女啪啪高清无遮挡免费 | 欧美大胆性生话 | 欧美日本一二三区 | 欧美一级毛片久久99精品蜜桃 |