99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

英創(chuàng)信息技術(shù)用GPIO實現(xiàn)多路外部中斷及脈沖計數(shù)簡介

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

掃碼添加小助手

加入工程師交流群

英創(chuàng)工控主板都給用戶提供了豐富的GPIO資源,在ESMARC系列的板卡上配置了32位GPIO,GPIO(General-purpose input/output)即通用輸入輸出,在實際使用中有多種用途,而作為外部中斷輸入便是較常用的功能,通過對外部輸入中斷的響應(yīng),可以滿足多種應(yīng)用需求,脈沖計數(shù)就是一種典型的應(yīng)用。英創(chuàng)主板已經(jīng)給用戶提供了兩路中斷功能,是采用異步IO的方式,電平上升沿觸發(fā)中斷,通過信號量SIGIO通知應(yīng)用程序,關(guān)于詳細的資料可以參考網(wǎng)站:《ESM335x外部中斷輸入應(yīng)用》。

為了讓用戶能夠使用到更多外部輸入中斷,英創(chuàng)公司進一步在驅(qū)動中增加了相應(yīng)的功能和接口,利用IO多路復(fù)用的技術(shù)讓所有GPIO都能夠作為外部中斷輸入,通過程序設(shè)置使能,一旦管腳電平發(fā)生變化,內(nèi)核就會通知應(yīng)用程序,這時使用select或者poll函數(shù)就可以接收到內(nèi)核發(fā)出的消息。通過這種方式,用戶可以將主板的32位GPIO全部作為外部中斷輸入,而原來提供的采用異步IO方式的兩路中斷我們原則上就不再做更新和維護,建議客戶使用我們最新提供的方法。下面就以兩路GPIO的脈沖計數(shù)功能為例,介紹如何通過select或者poll函數(shù)實現(xiàn)外部中斷響應(yīng)。

首先要啟用中斷輸入功能,這一步需要調(diào)用英創(chuàng)公司提供的設(shè)置GPIO為輸入狀態(tài)的API函數(shù)來實現(xiàn)。也就是在程序中調(diào)用一次函數(shù),設(shè)置GPIO為輸入狀態(tài),就能把對應(yīng)的GPIO管腳設(shè)置為外部中斷輸入功能,如設(shè)置GPIO0和GPIO23為中斷輸入,代碼如下:

int GPIO_OutDisable(fd, GPIO0 | GPIO23)

當(dāng)設(shè)置完成后,GPIO作為輸入狀態(tài),同時會監(jiān)測外部輸入電平變化,并通過內(nèi)核驅(qū)動通知應(yīng)用層。應(yīng)用程序使用select或者poll函數(shù)來監(jiān)聽GPIO的句柄的讀事件就能夠獲取到通知,用戶可以通過多線程的方式來實現(xiàn),通過select函數(shù)實現(xiàn)代碼如下:

while( 1 )
{
//設(shè)置讀事件
FD_ZERO(&fdRead);
FD_SET(fd,&fdRead);
//設(shè)置超時時間
aTime.tv_sec= 0;
aTime.tv_usec= 20000;
ret =select(fd+1,&fdRead,NULL,NULL,&aTime);
if(ret < 0 )
{
printf("error!\n");
break;
}
if(ret > 0)
{
//判斷是否讀事件
if(FD_ISSET(fd,&fdRead))
{
dwPinState = GPIO0 | GPIO23;
rc = GPIO_PinState(fds.fd, &dwPinState);
if(rc< 0)
{
printf("GPIO_PinState::failed %d\n", rc);
returnrc;
}
//根據(jù)上升沿對脈沖計數(shù)
if(dwPinState& GPIO0)
pulse1_num++;
if(dwPinState& GPIO23)
pulse2_num++;
//計數(shù)到500就退出
if(pulse1_num == 500 && pulse2_num == 500)
{
printf("the pules number is 500\n");
break;
}
}
}
}
close(fd);
return 0;

使用poll函數(shù)也是類似的,同樣的需要先使能GPIO的外部中斷輸入功能,即調(diào)用一次設(shè)置GPIO為輸入狀態(tài)的函數(shù),然后使用poll函數(shù)來監(jiān)聽GPIO的句柄的讀事件就能夠獲取到通知,具體代碼如下:

while(1)
{
structpollfdfds;
int timeout;
//設(shè)置監(jiān)聽句柄
fds.fd = fd;
//設(shè)置讀事件
fds.events = POLLIN;
//設(shè)置超時時間
timeout = 20000;
ret = poll(&fds, 1, timeout);
if (ret < 0 )
{
printf("error!\n");
break;
}
if (ret > 0)
{
//判斷是否讀事件
if (fds.revents == POLLIN)
{
dwPinState = GPIO0 | GPIO23;
rc = GPIO_PinState(fds.fd, &dwPinState);
if(rc< 0)
{
printf("GPIO_PinState::failed %d\n", rc);
returnrc;
}
//根據(jù)上升沿對脈沖計數(shù)
if(dwPinState& GPIO0)
pulse1_num++;
if(dwPinState& GPIO23)
pulse2_num++;
//計數(shù)到500就退出
if(pulse1_num == 500 && pulse2_num == 500)
{
printf("the pules number is 500\n");
break;
}
}
}
}
close(fd);
return 0;

當(dāng)輸入電平發(fā)生變化,select和poll函數(shù)偵測到讀事件,就可以進行相應(yīng)的操作,示例代碼通過判斷上升沿來計數(shù)脈沖數(shù),經(jīng)過測試,上述代碼能對兩路2KHz的脈沖實現(xiàn)可靠計數(shù)。用戶還可以根據(jù)實際的應(yīng)用需求,把上述代碼修改為支持多路脈沖計數(shù)功能。

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

    關(guān)注

    7

    文章

    6100

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    開疆智能CCLinkIE轉(zhuǎn)ModbusTCP網(wǎng)關(guān)連接脈沖計數(shù)器配置案例

    本案例是三菱PLC通過CCLinkIE轉(zhuǎn)ModbusTCP網(wǎng)關(guān)連接脈沖計數(shù)器的配置案例,具體配置如下。 配置過程: 首先設(shè)置從站通訊參數(shù) 主要設(shè)置IP地址,工作模式以及端口號(Modbus默認502
    的頭像 發(fā)表于 06-25 17:49 ?150次閱讀
    開疆智能CCLinkIE轉(zhuǎn)ModbusTCP網(wǎng)關(guān)連接<b class='flag-5'>脈沖計數(shù)</b>器配置案例

    經(jīng)過光耦之后,脈沖計數(shù)功能為什么不能實現(xiàn)?

    設(shè)置PA0為普通定時器,復(fù)用推挽輸出,但是發(fā)現(xiàn)信號經(jīng)過光耦之后高電平不到2V,不能進行脈沖計數(shù),如果設(shè)置成中斷輸入,高電平是3.3V,請問這是啥原因?現(xiàn)有的電路能否實現(xiàn)脈沖計數(shù)功能?
    發(fā)表于 06-17 06:08

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

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

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結(jié)構(gòu)、寄存器、優(yōu)先級及相關(guān)函數(shù),再說明EXTI(外部
    的頭像 發(fā)表于 05-26 16:27 ?507次閱讀
    第六章 <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗將演示如何在小凌派-RK2206開發(fā)板上使用IOT庫的GPIO中斷模式,進行GPIO編程開發(fā)。例程將創(chuàng)建一個任務(wù),通過配置GPIO
    的頭像 發(fā)表于 04-21 10:39 ?436次閱讀
    基于小凌派RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>中斷</b>

    GPIO模塊與其他外設(shè)的連接方法

    輸入或輸出模式。在輸入模式下,GPIO引腳可以讀取外部信號的狀態(tài);在輸出模式下,它們可以向外部設(shè)備發(fā)送信號。此外,GPIO引腳還可以被配置為特殊功能,如
    的頭像 發(fā)表于 01-09 09:48 ?968次閱讀

    飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕

    近日,由中國教育技術(shù)協(xié)會主辦,教育部教育管理信息中心教育信創(chuàng)實驗室、公安部第三研究所、中國電子工業(yè)標(biāo)準(zhǔn)化技術(shù)協(xié)會信創(chuàng)工委會支持,北京航空航天
    的頭像 發(fā)表于 12-24 09:57 ?510次閱讀

    stm32 GPIO中斷配置教程

    在嵌入式開發(fā)中,STM32微控制器因其高性能和豐富的外設(shè)而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制器中常用的功能之一,它允許開發(fā)者在特定引腳上檢測到外部信號變化時快速響應(yīng)。 1.
    的頭像 發(fā)表于 11-19 15:53 ?3437次閱讀

    SOC GPIO操作

    sapphire Soc提供了兩個GPIO組每組有4個GPIO,定義為GPIO[3:0],其中只有GPIO[1:0]可以支持中斷。
    的頭像 發(fā)表于 11-01 11:06 ?484次閱讀

    中科創(chuàng)達榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達憑借非凡的技術(shù)實力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?958次閱讀

    樹莓派gpio有什么,樹莓派gpio接口及編程方法

    /Output,通用輸入/輸出)是樹莓派提供的一組可編程的引腳,是樹莓派與外部世界進行交互的重要橋梁。通過GPIO,用戶可以控制外部電路,讀取外部信號,
    的頭像 發(fā)表于 10-22 18:09 ?2669次閱讀

    STM32CUBEMX(11)--外部中斷(EXTI)

    配置此端口為中斷口。 GPIO 口連接到 16 個外部中斷 / 事件線如下圖 ??梢钥吹絇C13應(yīng)該是在EXTI13上。 外部
    發(fā)表于 09-10 15:44

    高速脈沖數(shù)據(jù)采集如何實現(xiàn)

    人員的青睞。對此,物通博聯(lián)提供高速脈沖數(shù)據(jù)采集的IOT解決方案,實現(xiàn)低成本、高效率的項目搭建。 物通博聯(lián)推出的工業(yè)數(shù)采終端支持脈沖計數(shù)功能,能夠實現(xiàn)各類傳感器
    的頭像 發(fā)表于 08-26 17:31 ?769次閱讀
    高速<b class='flag-5'>脈沖</b>數(shù)據(jù)采集如何<b class='flag-5'>實現(xiàn)</b>

    具有脈沖計數(shù)接口的 LMT01-Q1 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有脈沖計數(shù)接口的 LMT01-Q1 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-13 09:20 ?0次下載
    具有<b class='flag-5'>脈沖計數(shù)</b>接口的 LMT01-Q1 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表

    具有脈沖計數(shù)接口的 LMT01 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有脈沖計數(shù)接口的 LMT01 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 08-13 09:19 ?0次下載
    具有<b class='flag-5'>脈沖計數(shù)</b>接口的 LMT01 0.5°C 精度雙引腳數(shù)字輸出溫度傳感器數(shù)據(jù)表