《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > WinCE下使用GPIO中斷功能

WinCE下使用GPIO中斷功能

2017-05-17
關鍵詞: interrupt WinCE GPIO

  1). 簡介

  GPIO的中斷功能對于嵌入式設備是一個基本功能,本文就基于WinCE系統演示GPIO中斷功能使用,所采用的嵌入式系統為Toradex Colibri iMX6S ARM計算機模塊配合Colibri EvaBoard開發載板。

  2). 準備

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

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

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

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

  e). 測試所使用的基準Interruptdemo請從這里下載。

  3). 通過按鍵測試中斷應用

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

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

  c). iMX6 WEC7系統中如下方式在注冊表中關閉SD驅動,然后保存注冊表并重啟模塊。

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

  [HKLM\Drivers\BuiltIn\SDBusDriver]

  “Dll”= “_SDBus.dll

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

  d). 在VS2008中打開Interruptdemo程序,如下修改“interruptdemo.c”文件,中斷方式保持上升沿方式,只添加按鍵抖動過濾以及中斷次數統計代碼。同時由于下載的demo中自帶的庫版本較老,請使用最新版本的庫文件替換”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). 編譯并部署程序并執行,結果如下,每按鍵一次SW6,會記錄并打印一次中斷,同時LED1也會變換狀態。

  20170112165609949_w.jpg

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

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

  b). 在VS2008中打開Gpio demo程序,修改Gpio_Demo.c,設置pin為133,同時做周期為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核心板,先運行上面的interruptdemo,然后運行gpiodemo,可以看到如下結果捕獲了20次中斷。

  20170112165610340_w.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 国产成人精品日本亚洲专区6 | 久久久久免费视频 | 中文字幕视频在线 | 成人国产永久福利看片 | 欧美激情视频一级视频一级毛片 | 久爱免费观看在线网站 | 欧美一级日韩在线观看 | 黄色片免费网址 | 2022国内精品免费福利视频 | 91tv成人影院免费 | 一级做a爰片性色毛片中国 一级做a爰性色毛片 | 精品无人区一区二区三区a 精品午夜国产在线观看不卡 | 高清国产一级精品毛片基地 | 欧美午夜伦y4480私人影院 | 国产福利微拍精品一区二区 | 亚欧精品在线观看 | 狠狠综合久久 | 国产99精品一区二区三区免费 | 亚洲国产成人久久一区二区三区 | 亚洲人成日本在线观看 | 亚洲在线一区二区三区 | 高清欧美日本视频免费观看 | 国产一级特黄aaa大片 | 九九精彩视频在线观看视频 | 亚洲深夜福利视频 | 亚洲激情自拍 | 免费播放国产性色生活片 | 欧美成人免费网在线观看 | 亚洲图片一区二区三区 | 欧美亚洲国产日韩一区二区三区 | 国产成人综合精品一区 | 一级毛片中国 | 日韩欧美毛片免费看播放 | 久久精品免费观看国产软件 | 深夜福利成人 | 久久狠狠色狠狠色综合 | 国产成人免费在线视频 | 欧美一及片 | 久久精品a一国产成人免费网站 | 久久视屏这里只有精品6国产 | 日韩精品中文字幕一区二区三区 |