《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > WinCE下使用GPIO中斷功能

WinCE下使用GPIO中斷功能

2017-05-17
關(guān)鍵詞: interrupt WinCE GPIO

  1). 簡(jiǎn)介

  GPIO的中斷功能對(duì)于嵌入式設(shè)備是一個(gè)基本功能,本文就基于WinCE系統(tǒng)演示GPIO中斷功能使用,所采用的嵌入式系統(tǒng)為Toradex Colibri iMX6S ARM計(jì)算機(jī)模塊配合Colibri EvaBoard開發(fā)載板。

  2). 準(zhǔn)備

  a). Toradex ColibriiMX6S (基于NXP iMX6 Solo SoC) 計(jì)算機(jī)模塊配合ColibriEva Board開發(fā)載板。

  b). WinCE 使用Toradex發(fā)布的最新版WEC7鏡像V1.1Beta4版本。

  c). 調(diào)試中斷及GPIO所需的Library使用Toradex官方發(fā)布的CEiMX6 library 版本。

  d). 測(cè)試所使用的基準(zhǔn)GPIO demo來自于上述library文件中的libdemo目錄。

  e). 測(cè)試所使用的基準(zhǔn)Interruptdemo請(qǐng)從這里下載。

  3). 通過按鍵測(cè)試中斷應(yīng)用

  a). 首先通過按鍵輸入測(cè)試中斷,按照Interruptdemo配置,還需要一個(gè)GPIO輸出在接收到中斷后改變其所驅(qū)動(dòng)的LED等狀態(tài)。在選擇GPIO的時(shí)候,請(qǐng)配合Colibri iMX6 手冊(cè)來選定未被系統(tǒng)默認(rèn)功能占用的引腳,如果一定要一些被CE占用但對(duì)于產(chǎn)品并未使用功能的引腳,需要現(xiàn)在WinCE注冊(cè)表中禁止該功能驅(qū)動(dòng)來釋放對(duì)應(yīng)管腳,否則會(huì)產(chǎn)生沖突,而是中斷程序獲取中斷統(tǒng)計(jì)異常,或者GPIO輸出被干擾。這里為了演示,就選擇模塊SODIMM Pin 49和43兩個(gè)管腳,默認(rèn)被SD/MMC接口占用,49管腳作為中斷輸入,43管腳作為GPIO輸出驅(qū)動(dòng)LED。

  b). 硬件連接,將Colibri Eva載板X10連接器 SODIMM_49和X21連接器SW6連接,并去掉對(duì)應(yīng)的X11 跳線帽;將X10連接器 SODIMM_43和X21連接器LED1連接,并去掉對(duì)應(yīng)的X11 跳線帽。

  c). iMX6 WEC7系統(tǒng)中如下方式在注冊(cè)表中關(guān)閉SD驅(qū)動(dòng),然后保存注冊(cè)表并重啟模塊。

  ----------------------------

  [HKLM\Drivers\BuiltIn\SDBusDriver]

  “Dll”= “_SDBus.dll

  ----------------------------

  d). 在VS2008中打開Interruptdemo程序,如下修改“interruptdemo.c”文件,中斷方式保持上升沿方式,只添加按鍵抖動(dòng)過濾以及中斷次數(shù)統(tǒng)計(jì)代碼。同時(shí)由于下載的demo中自帶的庫版本較老,請(qǐng)使用最新版本的庫文件替換”inc”和”libs“目錄的文件。

  ----------------------------

  #define INTERRUPT_PIN  49                 ///<constant interrupt pin

  #define OUTPUT_PIN 43                 ///<constant output pin

  …

  BOOL pinLevelint =FALSE;                               ///< Variable to get irq pin current level

  int intCounter = 0;                                     ///< Variable to count irq numbers

  …

  if (retVal ==WAIT_OBJECT_0)

  {

  Sleep(10);                                                       ///< eliminate button jitter

  pinLevelint= Gpio_GetLevel(hGpio, interruptPin);

  if(pinLevelint == TRUE)

  {

  if(pinLevel == TRUE)

  {

  Gpio_SetLevel(hGpio, outputPin,ioLow);               ///< Set output pin(SODIMM 135) to low

  pinLevel = FALSE;

  }

  else

  {

  Gpio_SetLevel(hGpio, outputPin,ioHigh);        ///< Setoutput pin(SODIMM 135) to high

  pinLevel = TRUE;

  }

  intCounter = intCounter++;                                    ///< count interrupt triggered numbers

  printf("\nInterruptcounter : %d", intCounter);

  Int_InterruptDone(hIntr,systemInterrupt);

  }

  else

  /*if(MessageBox(NULL, L"Interrupt Event Detected, continue Waiting?",L"Interrupt", MB_YESNO) == IDNO)

  {

  break;

  }*/

  {

  Int_InterruptDone(hIntr,systemInterrupt);

  }

  …

  ----------------------------

  e). 編譯并部署程序并執(zhí)行,結(jié)果如下,每按鍵一次SW6,會(huì)記錄并打印一次中斷,同時(shí)LED1也會(huì)變換狀態(tài)。

  20170112165609949_w.jpg

  4). 通過PWM輸入測(cè)試中斷輸入

  a). 在上面測(cè)試的基礎(chǔ)上,選擇SODIMMPin 133作為PWM輸出GPIO,在Colibri Eva載板上面通過X10連接器將SODIMM_133和SODIMM_49互連。

  b). 在VS2008中打開Gpio demo程序,修改Gpio_Demo.c,設(shè)置pin為133,同時(shí)做周期為40ms的PWM波輸出。

  ----------------------------

  …

  uIo io1 = {133, ioColibriPin};

  …

  for(int i=0;i<20;i++)< span="">

  {

  Gpio_SetLevel      (hGpio, io1, ioHigh);

  Sleep(20);

  Gpio_SetLevel       (hGpio, io1, ioLow);

  Sleep(20);

  }

  …

  ----------------------------

  c). 編譯部署gpio demo到imx6核心板,先運(yùn)行上面的interruptdemo,然后運(yùn)行g(shù)piodemo,可以看到如下結(jié)果捕獲了20次中斷。

  20170112165610340_w.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 暴力调教一区二区三区| 人妻18毛片a级毛片免费看| 亚洲人成在线观看| 色偷偷888欧美精品久久久| 国产麻豆流白浆在线观看| 亚洲熟女综合一区二区三区| 骚虎视频在线免费观看| 天天躁日日躁狠狠躁| 亚洲精品成a人在线观看| 贵妇肉体销魂阅读| 国产麻豆流白浆在线观看| 一个人晚上睡不着看b站大全| 最近免费中文字幕大全高清大全1| 免费在线观看中文字幕| 黄瓜视频芭乐视频app下载| 天堂在线免费观看中文版| 久久久久久福利| 欧美成人亚洲欧美成人| 午夜伦理宅宅235| 黑人一个接一个上来糟蹋| 在线观看日本中文字幕| 丰满老熟妇好大bbbbb| 欧美性xxxxx极品| 免费精品视频在线| 高清不卡毛片免费观看| 国产高清在线看| a级毛片高清免费视频就| 日日夜夜操操操| 亚洲一区日韩一区欧美一区a| 电车上强制波多野结衣| 国产三级在线观看播放| 看黄色免费网站| 天天视频国产免费入口| 一级做a爰片久久毛片16| 日韩在线永久免费播放| 亚洲欧美4444kkkk| 精品国产一二三区在线影院| 国产女人aaa级久久久级| 91在线一区二区| 小婷的性放荡日记h交| 久久久精品人妻一区二区三区蜜桃 |