一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

int GPIO_OutDisable(fd, GPIO0 | GPIO23)

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

while( 1 )
{
//設置讀事件
FD_ZERO(&fdRead);
FD_SET(fd,&fdRead);
//設置超時時間
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;
}
//根據上升沿對脈沖計數
if(dwPinState& GPIO0)
pulse1_num++;
if(dwPinState& GPIO23)
pulse2_num++;
//計數到500就退出
if(pulse1_num == 500 && pulse2_num == 500)
{
printf("the pules number is 500\n");
break;
}
}
}
}
close(fd);
return 0;

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

while(1)
{
structpollfdfds;
int timeout;
//設置監(jiān)聽句柄
fds.fd = fd;
//設置讀事件
fds.events = POLLIN;
//設置超時時間
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;
}
//根據上升沿對脈沖計數
if(dwPinState& GPIO0)
pulse1_num++;
if(dwPinState& GPIO23)
pulse2_num++;
//計數到500就退出
if(pulse1_num == 500 && pulse2_num == 500)
{
printf("the pules number is 500\n");
break;
}
}
}
}
close(fd);
return 0;

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

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

    關注

    7

    文章

    6101

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    開疆智能CCLinkIE轉ModbusTCP網關連接脈沖計數器配置案例

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

    經過光耦之后,脈沖計數功能為什么不能實現

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

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

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

    第六章 外部中斷

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

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

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

    GPIO模塊與其他外設的連接方法

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

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

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

    stm32 GPIO中斷配置教程

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

    SOC GPIO操作

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

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

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

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

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

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

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

    高速脈沖數據采集如何實現

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

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

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

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

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