chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)GPIO應(yīng)用于Linux LED子系統(tǒng)和輸入事件偵測(cè)介紹

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-06 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

GPIO(General-purpose input/output)即通用輸入輸出,根據(jù)名字就能夠了解到在實(shí)際應(yīng)用中可以有很多種用途,最常見(jiàn)的便是用來(lái)控制LED燈的亮滅,或用來(lái)偵測(cè)輸入信號(hào)的高低變化。英創(chuàng)工控主板都給用戶提供了豐富的GPIO資源,ESMARC系列的板卡擁有32位GPIO,為了方便用戶能夠更方便的進(jìn)行開(kāi)發(fā),英創(chuàng)公司進(jìn)一步在軟件上也增加了一些實(shí)用的功能。在GPIO用作控制LED燈的時(shí)候,用戶可以直接使用Linux的LED子系統(tǒng)來(lái)對(duì)指定的GPIO口進(jìn)行設(shè)置和操作,比如LED的亮滅或者設(shè)置觸發(fā)方式等。如果是將GPIO設(shè)置為輸入狀態(tài)偵測(cè)輸入信號(hào)的高低變化,一旦電平發(fā)生變化,內(nèi)核就會(huì)通知應(yīng)用程序,這時(shí)使用select函數(shù)就可以接收到內(nèi)核發(fā)出的消息,不用再通過(guò)while或者for函數(shù)不斷的輪詢,實(shí)際的功能已經(jīng)在ESMARC系列的ESM6800主板上通過(guò)測(cè)試和驗(yàn)證了。下面就針對(duì)兩個(gè)功能來(lái)介紹一下具體的使用方法。

用戶使用GPIO控制LED燈,可以直接調(diào)用英創(chuàng)公司提供的API函數(shù),將GPIO置為輸出然后置高或者置低。不過(guò)Linux系統(tǒng)將控制LED燈的這部分功能整合起來(lái),設(shè)計(jì)成了一個(gè)標(biāo)準(zhǔn)的LED子系統(tǒng),對(duì)LED子系統(tǒng)的操作在shell環(huán)境中就能完成。英創(chuàng)公司也將這部分功能的支持加入到了板卡中,如果熟悉使用LED子系統(tǒng)來(lái)控制的用戶,就可以選用這種方式。通過(guò)加載一個(gè)內(nèi)核模塊led-emtronix.ko來(lái)啟用LED子系統(tǒng),加載的時(shí)候通過(guò)參數(shù)gpios來(lái)設(shè)置需要使用LED子系統(tǒng)操作的GPIO,gpios參數(shù)為一個(gè)32位的整數(shù),代表32位GPIO,1表示enable而0表示disable。所以當(dāng)我們選用GPIO0~GPIO3時(shí),加載內(nèi)核模塊的命令如下:insmode led-emtronix.ko gpios=0x0f,加載完成后,用戶可以在/sys/class/leds/目錄下看到新生成了四個(gè)對(duì)應(yīng)的文件夾LED1、LED2、LED3和LED4,注意,為了方便用戶區(qū)分,LED子文件夾的標(biāo)號(hào)和GPIO的標(biāo)號(hào)是一一對(duì)應(yīng)的,比如GPIO10生成的子文件夾為L(zhǎng)ED10。

加載內(nèi)核模塊

我們選擇LED0這個(gè)目錄進(jìn)入,可以看到里面有許多文件,我們要使用到的文件為brightness和trigger這兩個(gè)。

文件列表

brightness這個(gè)文件用來(lái)控制LED的開(kāi)關(guān),對(duì)應(yīng)板卡的GPIO電平高低,當(dāng)brightness文件的值為0時(shí),GPIO輸出低電平,當(dāng)brightness文件的值為1時(shí)GPIO則輸出高電平,需要注意的是,加載內(nèi)核模塊后,默認(rèn)情況為輸出低電平即brightness文件的值為0。在shell中需要查看brightness的值可以使用命令cat brightness:

查看brightness文件

如果是需要設(shè)置brightness文件的值,則可以使用echo命令:

設(shè)置brightness文件的值

另一個(gè)文件trigger的作用是設(shè)置觸發(fā)方式,默認(rèn)為none即沒(méi)有觸發(fā)方式。使用cat命令讀取trigger文件可以得到支持的所有觸發(fā)方式,如下圖看到有磁盤(pán),定時(shí)器,心跳,背光等多種觸發(fā)方式:

查看觸發(fā)方式

有方括號(hào)的表示為現(xiàn)在的有效觸發(fā)方式,如果要選用heartbeat作為觸發(fā)方式,還是使用echo命令來(lái)進(jìn)行設(shè)置:

設(shè)置trigger

設(shè)置之后可以通過(guò)示波器看到對(duì)應(yīng)的GPIO像心跳一樣,每秒會(huì)進(jìn)行一次拉高拉底。按照上面所介紹的方法,就能夠使用LED子系統(tǒng)來(lái)對(duì)板卡的GPIO進(jìn)行控制。

接下來(lái)介紹一下輸入事件通知的功能,英創(chuàng)板卡的GPIO上電是默認(rèn)都為輸入狀態(tài)(有3.3V上拉),在默認(rèn)狀態(tài)下是不會(huì)響應(yīng)輸入電平變化進(jìn)行事件通知的。要啟用這一功能,需要調(diào)用英創(chuàng)公司提供的,設(shè)置GPIO輸入狀態(tài)的API來(lái)實(shí)現(xiàn)。也就是在程序中需要調(diào)用一次API,設(shè)置GPIO為輸入,才會(huì)使能這一位GPIO的輸入事件通知功能,代碼如下:

int GPIO_OutDisable(int fd, unsigned int dwDisBits)

{

int rc;

struct double_pars dpars;

dpars.par1 = ESM6800_GPIO_OUTPUT_DISABLE;

dpars.par2 = dwDisBits;

rc = write(fd, &dpars, sizeof(struct double_pars));

return rc;

}

rc = GPIO_OutDisable(fd, i1); //set GPIO as input

if(rc < 0)

{

printf("GPIO_OutEnable::failed %d\n", rc);

return rc;

}

當(dāng)設(shè)置完成后,GPIO作為輸入狀態(tài),同時(shí)內(nèi)核會(huì)在輸入的電平變化時(shí)通知應(yīng)用層,使用select函數(shù)來(lái)監(jiān)聽(tīng)GPIO的句柄的讀事件就能夠獲取到通知,用戶可以通過(guò)多線程的方式來(lái)實(shí)現(xiàn),代碼如下:

while( 1 )

{

//設(shè)置讀事件

FD_ZERO(&fdRead);

FD_SET(fd,&fdRead);

//設(shè)置超時(shí)時(shí)間

aTime.tv_sec = 0;

aTime.tv_usec = 20000;

ret = select(fd+1,&fdRead,NULL,NULL,&aTime);

//printf( "select ret = %d\n", ret);

if (ret < 0 )

{

printf("error!\n");

break;

}

if (ret > 0)

{

//判斷是否讀事件

if (FD_ISSET(fd,&fdRead))

{

//讀事件觸發(fā),進(jìn)行相應(yīng)的動(dòng)作

dwPinState = 0xffffffff;

rc = GPIO_PinState(fd, &dwPinState);

if(rc < 0)

{

printf("GPIO_PinState::failed %d\n", rc);

return rc;

}

printf("PinState = 0x%08x\n", dwPinState);

}

}

}

當(dāng)輸入電平發(fā)生變化,select偵測(cè)到讀事件,就可以進(jìn)行相應(yīng)的操作,示例代碼只是簡(jiǎn)單的讀取了當(dāng)前GPIO的輸入電平狀態(tài),用戶可以根據(jù)實(shí)際的應(yīng)用來(lái)修改。當(dāng)有多路GPIO用于偵測(cè)輸入電平變化的時(shí)候,在接收到讀事件后,如果需要判斷是哪一位GPIO偵測(cè)到電平變化,就要立刻讀取當(dāng)前GPIO的狀態(tài)來(lái)以此進(jìn)行判斷。對(duì)于不需要這一功能的用戶也不會(huì)有什么影響,當(dāng)調(diào)用函數(shù)將GPIO設(shè)置為輸入后,不使用select函數(shù)去監(jiān)聽(tīng)GPIO的句柄即可,其他功能都和原來(lái)一致。

英創(chuàng)公司希望通過(guò)增加一些類似的實(shí)用功能,讓用戶的開(kāi)發(fā)能夠更加方便,如果在使用過(guò)程中遇到任何問(wèn)題,可以和英創(chuàng)公司的工程師聯(lián)系尋求技術(shù)支持。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11817

    瀏覽量

    219534
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

    37156
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    龍芯中科助力2025教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦

    2025年11月13日-15日,由中國(guó)教育技術(shù)協(xié)會(huì)主辦、浙江大學(xué)與中國(guó)教育技術(shù)協(xié)會(huì)網(wǎng)絡(luò)安全專業(yè)委員會(huì)聯(lián)合承辦,中國(guó)電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會(huì)信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)、浙江高校信
    的頭像 發(fā)表于 11-21 16:23 ?914次閱讀

    【書(shū)籍評(píng)測(cè)活動(dòng)NO.67】成為硬核Linux開(kāi)發(fā)者:《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》

    棄用sysfs接口,使用libgpiod庫(kù)在用戶空間便捷操作GPIO。還介紹Linux內(nèi)核輸入子系統(tǒng),強(qiáng)調(diào)輪詢
    發(fā)表于 11-17 17:52

    OBOO鷗柏|信創(chuàng)觸摸一體機(jī)兆芯115寸Linux國(guó)產(chǎn)系統(tǒng)技術(shù)智造

    BOO鷗柏信創(chuàng)觸摸一體機(jī):兆芯115寸Linux智造新標(biāo)桿在信息技術(shù)應(yīng)用創(chuàng)新浪潮中,【OBOO鷗柏】推出的信創(chuàng)觸摸一體機(jī)以其卓越性能和智能化設(shè)計(jì),成為行業(yè)數(shù)字化轉(zhuǎn)型的重要工具。這款搭載
    的頭像 發(fā)表于 11-16 15:44 ?2137次閱讀
    OBOO鷗柏|信<b class='flag-5'>創(chuàng)</b>觸摸一體機(jī)兆芯115寸<b class='flag-5'>Linux</b>國(guó)產(chǎn)<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>技術(shù)</b>智造

    創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—Linux-RT應(yīng)用開(kāi)發(fā)案例

    本文圍繞創(chuàng)龍科技研發(fā)的評(píng)估板,聚焦 Linux-RT 系統(tǒng)應(yīng)用開(kāi)發(fā),先通過(guò) Cyclictest 工具對(duì)比 LinuxLinux-RT
    的頭像 發(fā)表于 09-25 17:25 ?859次閱讀
    <b class='flag-5'>創(chuàng)</b>龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—<b class='flag-5'>Linux</b>-RT應(yīng)用開(kāi)發(fā)案例

    佛瑞亞如何通過(guò)信息技術(shù)推動(dòng)業(yè)務(wù)增長(zhǎng)

    在數(shù)字化、信息化的浪潮下,信息技術(shù)已經(jīng)不僅是后臺(tái)工具,更成為驅(qū)動(dòng)企業(yè)發(fā)展的關(guān)鍵力量。本期Women Inspiring Mobility,我們采訪了佛瑞亞中國(guó)區(qū)信息技術(shù)總監(jiān)馬瑛,了解她和團(tuán)隊(duì)如何將
    的頭像 發(fā)表于 07-29 14:00 ?1036次閱讀

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)產(chǎn)業(yè)已成為我國(guó)實(shí)現(xiàn)科技自立自強(qiáng)、保障國(guó)家信息安全的關(guān)鍵領(lǐng)域。信創(chuàng),即信息技術(shù)應(yīng)用創(chuàng)新,其核心目標(biāo)是實(shí)現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?821次閱讀

    DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)

    and Information Technology Devices)認(rèn)證機(jī)構(gòu)。該認(rèn)證用于確保進(jìn)入沙特市場(chǎng)的產(chǎn)品符合質(zhì)量和安全要求,適用于通信和信息技術(shù)設(shè)備,包括無(wú)線設(shè)備、電信設(shè)備和信息技術(shù)
    的頭像 發(fā)表于 07-15 14:27 ?1031次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國(guó)家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國(guó)家網(wǎng)絡(luò)安
    的頭像 發(fā)表于 06-13 10:06 ?9526次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法
    的頭像 發(fā)表于 06-03 11:32 ?1441次閱讀
    RK3568驅(qū)動(dòng)指南|第十二篇 <b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>-第130章 <b class='flag-5'>GPIO</b>的調(diào)試方法

    Air780EPM應(yīng)用開(kāi)發(fā):解鎖GPIOLED的N種交互模式

    今天特別分享探索Air780EPM中GPIOLED的多樣交互!本文介紹N種交互模式,包括脈沖控制、狀態(tài)切換及多LED聯(lián)動(dòng),為智能設(shè)備開(kāi)發(fā)提供豐富
    的頭像 發(fā)表于 05-29 14:31 ?889次閱讀
    Air780EPM應(yīng)用開(kāi)發(fā):解鎖<b class='flag-5'>GPIO</b>與<b class='flag-5'>LED</b>的N種交互模式

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?1188次閱讀
    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>API函數(shù)的引入

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)

    迅為電子RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng) GPIO操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-28 15:24 ?1506次閱讀
    迅為RK3568驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b> <b class='flag-5'>GPIO</b>操作函數(shù)實(shí)驗(yàn)

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南GPIO子系統(tǒng)三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)
    的頭像 發(fā)表于 05-26 15:39 ?1676次閱讀
    迅為RK3568開(kāi)發(fā)板驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>三級(jí)節(jié)點(diǎn)操作函數(shù)實(shí)驗(yàn)

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)

    RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)
    的頭像 發(fā)表于 05-23 13:47 ?1197次閱讀
    RK3568驅(qū)動(dòng)指南|第十二篇 <b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>-第135章 <b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>與pinctrl<b class='flag-5'>子系統(tǒng)</b>相結(jié)合實(shí)驗(yàn)

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能

    迅為RK3568驅(qū)動(dòng)指南GPIO子系統(tǒng)實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能
    的頭像 發(fā)表于 05-22 14:27 ?2345次閱讀
    迅為RK3568驅(qū)動(dòng)指南<b class='flag-5'>GPIO</b><b class='flag-5'>子系統(tǒng)</b>實(shí)戰(zhàn):實(shí)現(xiàn)動(dòng)態(tài)切換引腳復(fù)用功能